我需要在std::vector
和std::list
之间进行选择,具体取决于bool
值。
例如:
template<bool VAL>
class A
{
typedef typename IF<VAL,std::vector,std::list>::RET data_t;
private:
B<data_t> _container;
};
template<bool g, class T, typename E>
struct IF
{
typedef T RET;
};
template<class T, typename E>
struct IF<false, T, E>
{
typedef E RET;
};
template <template <class, class> class Container>
class B
{
};
错误:
错误1错误C3203:'vector':unspecialized类模板不能用作模板参数'T'的模板参数,期望是真实类型
错误2错误C3203:'list':unspecialized类模板不能用作模板参数'E'的模板参数,期望是真实类型
答案 0 :(得分:1)
您尝试将std::vector
和std::list
作为类型传递。
它们不是类型;它们本身就是类型的模板。
互联网上存在许多传递标准容器作为模板参数的例子。现在你知道要寻找什么了。 :)