| #include "benchmark/benchmark.h" |
| |
| namespace { |
| // Simulate an overloaded function name. |
| // This version does nothing and is just here to create ambiguity for |
| // MyOverloadedBenchmark. |
| BENCHMARK_UNUSED void MyOverloadedBenchmark() {} |
| |
| // This is the actual benchmark function we want to register. |
| // It has the signature void(benchmark::State&) required by the library. |
| void MyOverloadedBenchmark(benchmark::State& state) { |
| for (auto _ : state) { |
| } |
| } |
| |
| // This macro invocation should compile correctly if benchmark.h |
| // contains the fix (using static_cast), but would fail to compile |
| // if the benchmark name were ambiguous (e.g., when using + or no cast |
| // with an overloaded function). |
| BENCHMARK(MyOverloadedBenchmark); |
| |
| // Also test BENCHMARK_TEMPLATE with an overloaded name. |
| template <int N> |
| void MyTemplatedOverloadedBenchmark() {} |
| |
| template <int N> |
| void MyTemplatedOverloadedBenchmark(benchmark::State& state) { |
| for (auto _ : state) { |
| } |
| } |
| |
| BENCHMARK_TEMPLATE(MyTemplatedOverloadedBenchmark, 1); |
| } // end namespace |
| |
| BENCHMARK_MAIN(); |