内联关键字与模板
当考虑使用内联关键字与模板时,会出现一个问题,考虑到编译器的能够确定内联的好处。
答案:不,不是Irrelevant
尽管编译器了解,内联关键字仍然与模板相关。虽然函数模板默认情况下通常不是内联的,但它们的显式专业化可以使它们内联。
特定情况
在某些情况下,省略 inline 关键字可能会导致问题。考虑以下示例:
#include "tpl.h"
#include "tpl.h"
#ifndef TPL_H #define TPL_H template<class T> void f(T) {} template<class T> inline T g(T) {} template<> inline void f<>(int) {} // OK: inline template<> int g<>(int) {} // error: not inline #endif
编译此代码会导致多个定义错误,因为 g未明确标记为内联。
经验法则
为了保持一致性并避免潜在错误,请考虑对打算内联的函数模板使用 inline 关键字。这与 Vandevoorde/Josuttis 的“C 模板:完整指南”中建议的经验法则一致,该规则建议在真正需要时进行内联编写。
以上是您应该在 C 模板中使用'inline”关键字吗?的详细内容。更多信息请关注PHP中文网其他相关文章!