当我尝试编译以下代码时(使用 g ++ 4.8.4 -std = c ++ 11 ):
#include <algorithm>
class A
{
public:
static const unsigned a = 1;
//static const unsigned a;
};
// const unsigned A::a = 1;
int main()
{
unsigned b = 2;
std::min(/*(unsigned)*/A::a, b);
}
我有链接错误:
对
的未定义引用A::a
如果我在 A类之外定义A::a
或在执行A::a
时将std::min
转换为无符号,则问题不存在。
是GCC的错误吗?如果不是这种行为的根本原因是什么?