Как работает следующее?
#include <limits>
int main()
{
const int* const foo = &std::numeric_limits<int> ::digits;
}
У меня сложилось впечатление, что для того, чтобы получить адрес члена static const
, нам нужно было физически определить его в каком-то блоке перевода, чтобы угодить компоновщику. Тем не менее, просмотрев предварительно обработанный код для этого TU, я не смог найти внешнее определение для элемента digits
(или любых других соответствующих элементов).
Я проверил это на двух компиляторах (VC ++ 10 и g ++ 4.2.4) и получил идентичные результаты от обоих (то есть, это работает). Линкер автоматически связывается с объектным файлом, в котором определен этот материал, или я что-то упускаю здесь очевидное?