我想要一个包装容器的模板类,但我想根据模板参数的值来选择包装哪个容器。 像这样的东西:
template<typename T>
class A{
std::vector<T> MyContainer;
// ...
}
template<>
class A<bool>{
std::deque<bool> MyContainer;
// ...
}
但避免了模板特化涉及的所有代码重复。我试图看看 std::enable_if
是否可以帮助我做一些技巧,但我还没有想出任何办法。
最佳答案
可以使用std::conditional
作为Nawaz said :
#include <type_traits>
template <typename T>
using MyContainerType = typename std::conditional<
std::is_same<T, bool>::value,
std::deque<T>,
std::vector<T>
>::type ;
template<typename T>
class A{
//std::vector<T> MyContainer;
// ...
MyContainerType<T> C;
} ;
关于c++ - 根据模板参数包装类型容器的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26699285/