有人会认为这段简单的代码应该很容易编译:
#include <utility>
struct Q {
static const int X = 0;
};
int main() {
std::pair<int, int>(Q::X, 0);
return 0;
}
但是,当我使用默认设置 (cygwin gcc 4.5.3) 使用 g++
编译它时,它向我抛出一个链接器错误:
undefined reference to `Q::X'
我在这里完全被难住了——MSVC 编译这个很好,但我的 gcc 没有。 (MinGW 也能正常工作。)
最佳答案
链接器无法找到 Q::X
的定义.
这可能是因为std::pair<>
构造函数将参数作为对 const 的引用,并且 Q::X
是左值,因此它需要 Q::X
的外部定义以便能够引用。
可移植修复:
int const Q::X;
关于c++ - undefined reference std::pair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17650532/