Специализация шаблонного класса с другим числом шаблонных параметров
Есть такой шаблонный класс c двумя параметрами:
template <class T1, class T2>
class A
{
public:
void f()
{
t1 = t2.get();
}
T1 result() {return t1;}
private:
T1 t1;
T2 t2;
};
Есть ли возможность написать специализацию этого класса для одного параметра шаблона, что-то вроде такого:
template<class T1>
class A<T1>
{
void f() {/*do nothing*/}
T1 result() {return t1;}
public:
T1 t1;
};
но в таком виде это не работает, компилятор требует два аргумента.
Можно сделать так:
template<class T1>
class A<T1, void>
{
void f() {/*do nothing*/}
T1 result() {return t1;}
public:
T1 t1;
};
Но мне не нравится при использовании писать void
:
A<int, void> a;
Хотелось бы писать просто
A<int> a;
Источник: Stack Overflow на русском