Странные неопределенные символы статических констант внутри структуры / класса

Либо я очень устал, либо происходит что-то странное, о чем я не знаю, потому что приведенный ниже код приводит к неопределенным символам для Foo :: A и Foo :: B при линковке . Это сведено к минимуму, насколько это возможно в более крупном проекте, но показывает суть того, на что я смотрю.

#include <algorithm>

struct Foo
{
    static const int A = 1;
    static const int B = 2;
};

int main()
{
    return std::min(Foo::A, Foo::B);
}

Без шаблона функции std :: min он работает нормально , т.е. просто возвращает Foo :: A . Также хорошо при определении статических целых значений вне класса / структуры (в этом простом случае глобальных). Однако, как только они внутри вот так, компоновщик не может их найти.

Может кто-нибудь объяснить, что происходит?

32
задан Suma 3 February 2011 в 21:24
поделиться