以下如何工作?
#include <limits>
int main()
{
const int* const foo = &std::numeric_limits<int> ::digits;
}
我的印象是,为了获取static const
-ant 成员的地址,我们必须在某个翻译单元中物理定义它,以便让链接器满意。也就是说,在查看了此 TU 的预处理代码后,我找不到该digits
成员(或任何其他相关成员)的外部定义。
我在两个编译器(VC++ 10 和 g++ 4.2.4)上对此进行了测试,并从两者中得到了相同的结果(即,它有效)。链接器是否会自动链接到定义了这些东西的目标文件,还是我在这里遗漏了一些明显的东西?