Typedef STL Containers c ++

时间:2014-05-13 00:35:24

标签: c++

我需要在std::vectorstd::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'的模板参数,期望是真实类型

1 个答案:

答案 0 :(得分:1)

您尝试将std::vectorstd::list作为类型传递。

它们不是类型;它们本身就是类型的模板。

互联网上存在许多传递标准容器作为模板参数的例子。现在你知道要寻找什么了。 :)