假设我有结构:
template<const float& myFloat>
struct Thing{ };
稍后宣布我必须这样做:
extern constexpr float value = 12.0f;
Thing<value> MyThing;
为什么需要 extern
关键字。我的意思是浮点数是extern
还是不是{应该是吗?)
答案 0 :(得分:3)
假设您的代码位于某处的头文件中。
碰巧,Thing
也有一个operator(),它存储在两个不同的 cpp文件中的std::function
中。
有人从两个std::function
中获取了typeids并询问它们是否相等。
浮子上有外部连接,它们显然是同一类型。没有,就没有办法表达它们。
基本上,类型取决于身份而不是float的值,并且只有外部链接全局变量在同一&#34;级别&#34;正如标准所要求的那样。
现在同样可以说lambda,但lambdas经常导致ODR违规。