LINUX.ORG.RU

Забыл сказать, компилятор GCC 4.4.0. При этом VC 2005 линкует нормально.

Dendy ★★★★★
() автор топика

С помощью экспериментов и гугла нашёл обходной путь:

template<> int A<int>::value = 0;

Обьясните мне кто-нибудь или ткните носом в стандарт, почему иначе GCC не воспринимает определение статической переменной шаблона?

Dendy ★★★★★
() автор топика
Ответ на: комментарий от Elverion

В обычных классах статическую переменную не нужно инициализировать, достаточно определить.

Dendy ★★★★★
() автор топика
Ответ на: комментарий от Dendy

>В обычных классах статическую переменную не нужно инициализировать, достаточно определить.

Инициализировать все равно нужно.

Elverion
()
Ответ на: комментарий от CEMEH

Спасибо большое, без спецификации шаблона инициализация даже оказалась не нужна:

template<class T> int A<T>::value;

Dendy ★★★★★
() автор топика
Ответ на: комментарий от CEMEH

> Для каждого типа будешь писать своё значения переменной? Может имелось в виду: template<class T> int A<T>::value = 0;

это не должно работать:) Примерно по той же причине по какой не бывает шаблонных виртуальных методов.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Не вижу никакой связи виртуальных методов со статической переменной конкретного типа, пусть даже и внутри шаблона, а код, перед тем как запостить здесь, я проверял...

CEMEH
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.