Аргумент по умолчанию для частичной специализации [Clang да, GCC нет] [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Аргумент по умолчанию для частичной специализации [Clang да, GCC нет] [дубликат]

Сообщение Anonymous »

Почему следующее компилируется с clang, но не с g++ 4.9

Код: Выделить всё

#include 

template< typename T1, typename T2 , typename T3 = int>
struct A;

template
struct A< std::array, T2,  T3 > {
int a;
};

int main()
{
A< std::array, double>  a;
a.a +=3;
}
http://coliru.stacked-crooked.com/a/c7800f49ba5aac43

g++ не находит подходящей специализации и жалуется на «неполный тип». Мне интересно, поскольку имя типа аргумента по умолчанию T3 = int должно применяться к специализации (или оно применяется только к полной специализации?)

Подробнее здесь: https://stackoverflow.com/questions/297 ... yes-gcc-no

Вернуться в «C++»