这是引起警告的代码:
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:在其余的代码中,我不会(明确地)使用任何概念。
答案 0 :(得分:3)
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();
}