I have a trouble with code below:
template<typename Name>
class Person;
template<typename Name, typename FamilyNmae>
class Person {};
template<typename Name, typename FamilyName>
class Person < Name(FamilyName) >
{
public:
Person(Name a)
: k{ a }
{
}
private:
Name k;
FamilyName l;
};
This code does not compile (C2977 'Person': too many template arguments), but if I do next:
template<typename Name>
class Person;
//template<typename Name, typename FamilyNmae>
//class Person {};
template<typename Name, typename FamilyName>
class Person < Name(FamilyName) >
{
public:
Person(Name a)
: k{ a }
{
}
private:
Name k;
FamilyName l;
};
It compiles properly. But I cannot find rule according which received the error. I mean not explanation from compiler writer, but from the standard. Does anybody know something about it ?