2016-02-27 89 views
2

這是非Boost C++ 11。對於兩種不同類型的單個堆棧式容器,最佳選擇是什麼?東西會像這樣工作假想場景:deque上有多種類型?

template<typename T> 
deque <pair<T, v8::Local<v8::Value>>> my_queue; 

uint32_t aUint = ...; 
v8::Local<v8::Value> value1 = ...; 
v8::Local<v8::String> aString = ...; 
v8::Local<v8::Value> value2 = ...; 

my_queue.push_back(make_pair(aUint, value1)); 
my_queue.push_back(make_pair(aString, value2)); 
+1

爲什麼你想重新發明'boost :: variant'?只需使用'boost :: variant'即可。 –

+0

那麼如果你不能使用'boost :: variant',你可以使用'union',但是它的安全性要低很多,你必須小心。 –

+0

這是一個公共npm模塊。由於Boost依賴性,我遇到了用戶無法編譯模塊的問題。得到了一個合理的解決方案? –

回答

1

下面的代碼使用std::experimental::any做到這一點。

#include <experimental/any>                                             
#include <deque> 

int main() 
{ 
    std::deque<std::experimental::any> d; 
    d.push_back(1); 
    d.push_back(std::make_pair(3, 2)); 
} 

我真的不知道這是否符合您的要求(顯然不是嚴格的標準C++ 11)。 FWIW,它使用g ++ - 5與--std=c++1y構建。