1
我想MyVector可以選擇std :: vector或boost :: container :: vector。如何實現它?我可以使用宏,但是我被告知它們不是很安全。謝謝。如何爲類模板生成別名?
#define MyVector std::vector
// #define MyVector boost::container::vector
我想MyVector可以選擇std :: vector或boost :: container :: vector。如何實現它?我可以使用宏,但是我被告知它們不是很安全。謝謝。如何爲類模板生成別名?
#define MyVector std::vector
// #define MyVector boost::container::vector
C++ 11具有別名模板。你可以這樣做:
template <typename T>
using MyVector = std::vector<T>;
//using MyVector = boost::container::vector<T>;
,然後用它像這樣:
MyVector<int> x;
在C++ 03你要麼使用宏或元函數。
template <typename T>
struct MyVector {
typedef std::vector<T> type;
//typedef boost::container::vector<T> type;
};
// usage is a bit tricky
MyVector<int>::type x;
// ... or when used in a template
typename MyVector<T>::type x;
嗯...我相信有一些尷尬與'type'成員typedeffing兩種不同類型的:) – xtofl
@xtofl哎呀,忘了評論它。 –