diff --git a/include/benchmark/benchmark_api.h b/include/benchmark/benchmark_api.h index 41b8b4f0..ab1f84a0 100644 --- a/include/benchmark/benchmark_api.h +++ b/include/benchmark/benchmark_api.h @@ -445,7 +445,7 @@ class Benchmark { // BENCHMARK_TEMPLATE(BM_Foo, 1); // // will register BM_Foo<1> as a benchmark. -#define BENCHMARK_TEMPLATE(n, a) \ +# define BENCHMARK_TEMPLATE1(n, a) \ static ::benchmark::internal::Benchmark* BENCHMARK_CONCAT( \ __benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ (new ::benchmark::internal::Benchmark(#n "<" #a ">", n)) @@ -455,6 +455,16 @@ class Benchmark { __benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ (new ::benchmark::internal::Benchmark(#n "<" #a "," #b ">", n)) +#if __cplusplus >= 201103L +#define BENCHMARK_TEMPLATE(n, ...) \ + static ::benchmark::internal::Benchmark* BENCHMARK_CONCAT( \ + _benchmark_, n, __LINE__) BENCHMARK_UNUSED = \ + (new ::benchmark::internal::Benchmark( \ + #n "<" #__VA_ARGS__ ">", n< __VA_ARGS__ > )) +#else +#define BENCHMARK_TEMPLATE(n, a) BENCHMARK_TEMPLATE1(n, a) +#endif + // Helper macro to create a main routine in a test that runs the benchmarks #define BENCHMARK_MAIN() \ int main(int argc, const char** argv) { \