C++11 std::map中的模板类型
我想创建一个向量对。这对成员中的一个是std::string,第二个是模板化类型 但是,这给了我编译错误:C++11 std::map中的模板类型,c++11,templates,std,std-pair,C++11,Templates,Std,Std Pair,我想创建一个向量对。这对成员中的一个是std::string,第二个是模板化类型 但是,这给了我编译错误: template <class T> std::vector<std::pair<std::string, T> > arrayMembers; 模板 std::向量阵列成员; 这可能吗?如果是som,我如何使其工作 感谢并问候您可以这样声明模板别名: template<typename T> using arrayMembers = s
template <class T>
std::vector<std::pair<std::string, T> > arrayMembers;
模板
std::向量阵列成员;
这可能吗?如果是som,我如何使其工作
感谢并问候您可以这样声明模板别名:
template<typename T>
using arrayMembers = std::vector<std::pair<std::string, T>>;
您正在声明一个变量
arrayMembers
。这只有在编译时知道其类型时才可能,因此变量的模板声明无法工作。是否需要在向量中使用任意类型?然后,您可能想考虑使用一个公共的基础类型,或者查看<代码> STD::任何< /Calp> /<代码> Boo::任何< /COD>。变量模板是C++ 17的特征,不是C++ 11的特征,这意味着<>代码> ARAREYS成员< /C>和std::function
代替T
。不,参数的类型可能不同。
arrayMembers<MyType> table;