【发布时间】:2021-08-07 10:24:23
【问题描述】:
假设我想声明一个内联函数,它将接受任意类型的参数。 我认为可以通过以下方式实现。
//////
inline auto const myfunc = [&](const auto& val){return something(val);};
//////
inline auto myfunc(const auto& val)
{
return something(val);
}
//////
template<class T>
inline T myfunc(const T& val)
{
return something(val);
}
所以我有几个问题。
- 我的定义是否有任何错误,是否支持这些定义?
- 这些定义中的任何一个都比另一个有什么优势,如果有,有什么优势?
- 就代码质量而言,这些定义中哪一个更好?
提前致谢。
【问题讨论】:
-
请每个问题回答一个问题。 1)你可以通过编译来回答
-
你不可能有一个
inline变量直接用带有(非初始化)捕获的 lambda 初始化(只能出现在函数内部)。
标签: c++ templates c++17 inline c++20