Я хочу изменить шаблонный бенчмарк Google (с настраиваемыми аргументами) для запуска с классом тестовых приборов, но не знаю, действительно ли это возможно, и если да, то каков правильный синтаксис.
Просто добавления класса фикстуры недостаточно,
static void CustomArguments(benchmark::internal::Benchmark* b) {
// define I, J
for (auto i : I)
{
for (auto j : J)
b->Args({i, j});
}
}
template<typename my_type>
class My_Fixture : public benchmark::Fixture
{
protected:
void SetUp(const ::benchmark::State& state) { ...}
virtual void TearDown() { ...}
};
template <typename any_type>
static void insert(benchmark::State& state)
{
for (auto _ : state)
{ ...}
}
BENCHMARK_TEMPLATE_F(My_Fixture, insert, my_type)->Apply(CustomArguments);
BENCHMARK_MAIN();
Компилятор жалуется на последнюю строку кода error: expected initializer before '->' token
, но также не может найти объявления переменныхот прибора внутри теста.Это может быть следствием или дополнительной ошибкой.Нужно ли регистрировать прибор дополнительно?Пример отлично работает без арматуры.