Как мне обработать «предупреждение: использование« auto »в объявлении параметров доступно только с -fconcepts» - PullRequest
0 голосов
/ 04 января 2019

Это код, который вызывает предупреждение:

inline auto getclock() { return std::chrono::steady_clock::now(); }
inline auto getelapsed(auto b, auto e) { return std::chrono::duration_cast<std::chrono::nanoseconds>(e-b).count(); }
//USAGE: auto b=getclock(); some_func_to_be_timed(...); auto duration=getelapsed(b, getclock()); ..

Этот код без проблем скомпилирован до того, как я недавно обновился до gcc 8 (c ++ 17), теперь я получаю предупреждение, как указано в вопросе,Зачем мне получать это предупреждение сейчас и как мне его обработать?

PS: я не использую понятия (явно) где-либо в остальной части кода.

1 Ответ

0 голосов
/ 04 января 2019

auto как параметр (пока) не разрешен для обычных функций.

Вы можете использовать обычный шаблон, например:

template <typename T> // or T1, T2 to mimic your code
auto getelapsed(T b, T e)
{
    return std::chrono::duration_cast<std::chrono::nanoseconds>(e-b).count();
}
...