我有一個類C
這是模板A<W>
或B<W>
。現在在C
中,我想要構造一個類型爲A<U>
或B<U>
的對象,具體取決於它實例化的內容。如何在收到Foo <S>後構造Foo <T>?
如果這聽起來有點怪,考慮下面的代碼,並在它的評論:
template<class W>
struct A {
typedef A type;
};
template<class W>
struct B {
typedef B type;
};
template<class AB>
struct C {
// AB is A or B. If it's A we want to construct A<double>, if it's B
// we want to construct B<double>:
typedef typename AB::type type; // A or B
typename type<double> D; // ERROR
D d;
};
int main(int argc, char** argv){
C<A<int> > c1;
C<B<int> > c2;
}
有沒有辦法做到這一點?
我認爲C
需要模板化嵌套模板,但我不知道該怎麼做。
啊,這就是我在腦子裏,當我說用它或許可以得到解決嵌套模板。太好了! – Frank