Я хочу специализировать шаблон для аргументов векторного шаблона STL. Примерно так:
// (1)
template <typename T>
class A
{
...
};
// (2)
template <>
class A<std::vector<> >
{
...
};
Мне все равно, какой тип элемента вектора. Я хотел бы использовать его следующим образом:
A<int> a1; // Will use the general specialization
A<std::vector<int> > a2; // Will use the second specialization
В общем, я пытался определить что-то похожее на черты типа boost. Что-то вроде
template <class T>
struct is_stl_vector
{
// Will be true if T is a vector, false otherwise
static const bool value = ...;
};
Я не могу использовать шаблон шаблона (я так думаю), потому что он должен компилироваться и для не шаблонных типов. Это вообще возможно?