【发布时间】:2020-04-12 16:31:35
【问题描述】:
考虑
template<typename T>
inline void f(T) {} // "inline" can be safely removed.
和
inline void f(auto) {} // Can "inline" also be safely removed?
根据 C++ 标准,可以 inline 在后一种情况下安全删除吗?
【问题讨论】:
-
如果“后一种情况”被包含在两个或多个翻译单元中并使用,并且使用相同的参数类型调用它,当然不是。这应该是相当明显的。
-
@SamVarshavchik 虽然它是一个模板,但至少常规模板是隐式内联的。
-
这两个
inlines 在模块上下文中都有一个meaning,即使它们是类成员。 -
@HolyBlackCat 模板不暗示内联!!
标签: c++ templates inline auto c++20