Возможно ли иметь шаблонный шаблон, а также шаблонный шаблон с другим типом?templated class с шаблоном конструктора (другого типа)
что-то вроде этого: возможно
template<typename T1>
class Foo{
template<typename T2>
Foo(T1 aBar, T2 dummyArgument){
bar = aBar;
bytesOfT2 = sizeof(T2);
};
int bytesOfT2;
T1 bar;
};
это? и если да, как бы я назвал такой конструктор? Нужно ли мне что-то учитывать в отношении файлов заголовков и cpp?
спасибо!
// edit: мой конкретный пример на самом деле даже немного сложнее. У меня есть
template <typename U1, U2>
class Foo{
U1 var1;
U2 var2;
};
template <typename T1>
class Bar{
template<typename T2, typename T3>
Bar(Foo<T2,T3> aFoo, T1 aVal){
val=aVal;
bytesOfT2=sizeof(T2);
bytesOfT3=sizeOf(T3);
};
int bytesOfT2;
int bytesOfT3;
T1 val;
};
это значит я могу здесь назвать конструктор просто с какой-либо переменной типа Foo, и он должен автоматически выбрать подходящий конструктор acording для конкретной версии Foo (например, если переменная я прохожу имеет тип Foo, если он автоматически установит T2 на bool и T3 на float)?
Что ты имеешь в виду «мне нужно рассмотреть что-то в отношении заголовочных и CPP файлы?» –
mmmh - по каким-то причинам (который я не помню) иногда мне приходилось ставить одну строку как «шаблонный класс Foo;» в файл cpp, если я когда-либо хотел иметь возможность использовать класс Foo с типом типа bool. (так что мне нужно было сделать это для каждого типа, который я хотел использовать с шаблоном) –
Mat
Ah. Вы можете прочитать, почему это происходит в [C++ FAQ Lite] (http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12) (эта запись и следующие записи обсуждают «проблема» и как вы ее решаете, эффективно, как правило, лучше всего реализовать весь шаблон в файле заголовка). –