如何处理“警告:仅在-fconcepts中可用的参数声明中使用'auto'”

时间:2019-01-04 05:54:42

标签: c++ warnings c++-concepts

这是引起警告的代码:

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 :(得分: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();
}