如何從一個類中提取模板類型:提取模板類的類型,以供其他模板使用
例如,我有一個類,如:
template <typename T, typename T2 = def>
class A
{
typedef T type;
typedef T2 type2;
//other stuff
}
而且我想在其他模板使用type2
:
template <typename G>
foo(A<G> a)
{
//This doesn't work:
std::vector<a::type2> vec;
//Neither does this:
std::vector<a->type2> vec;
//or this:
std::vector<typename a::type2> vec;
}
那麼,如何找出type2
是實例a
(可a
有VAL你是不是默認的type2
)?
對不起,我已經澄清了我的問題。我想要一個特定實例的類型......是可能的嗎? –
@AndrewSpott,這不可能。但你爲什麼要那樣? 'a'是'A'的對象,不是一種類型。最終,'type2'屬於'A <...>',所以它'type2'必須從它所屬的地方提取。 –
iammilind
@ArewrewSpott:嵌套類型是* type *的一個屬性,而不是實例。沒有*類型的特定實例*,而是實例所屬類的類型。 –