Почему следующая компиляция с clang
, но не с g++ 4.9
#include <array>
template< typename T1, typename T2 , typename T3 = int>
struct A;
template<typename T, unsigned int N, typename T2, typename T3>
struct A< std::array<T,N>, T2, T3 > {
int a;
};
int main()
{
A< std::array<int,10>, double> a;
a.a +=3;
}
http://coliru.stacked-crooked.com/a/c7800f49ba5aac43
g++ не находит подходящей специализации и жалуется на "неполный тип". Мне интересно, поскольку аргумент по умолчанию typename T3 = int
должен применяться для специализации (или применяется только для полной специализации?)