2011-11-29 91 views
2

我不知道,如果我們能夠這樣做C++:我們可以收集類型嗎?

a.pushType<int> 
a.pushType<std::string> 
a.pushType<char> 

所以比我們可致電

std::map<a.T1, a.T3> mymap; 
std::map<a.T1, a.T2> mymap; 
someClass<a.T1, a.T2, a.T3> 

,我需要它在運行時不但在編譯的時候(在我的頭提供它只有庫)

C++ 03和Boost有可能嗎?

+0

爲什麼不能用'T1'&'T2'適當的類型寫'std :: map

回答

7

這是一種稱爲TypeLists的機制;據我所知它是由Andrei Alexandrescu在現代C++設計第一次提出的。在Alexandrescu的圖書館裏有一個TypeLists實現,Loki。我也認爲Boost.MPL有一個類似的結構:vector

+1

@myWallJSON:您編輯了問題。之前並不清楚。 – Nawaz

0
typedef std::pair<int, std::string> a; 

std::map<a::first_type, a::second_type> mymap; 

雖然在編譯時必須知道類型。有辦法繞過它,但它們非常複雜。

相關問題