Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 std::map中的模板类型_C++11_Templates_Std_Std Pair - Fatal编程技术网

C++11 std::map中的模板类型

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

我想创建一个向量对。这对成员中的一个是std::string,第二个是模板化类型

但是,这给了我编译错误:

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>和 AlayMys<代码>是两个完全不同的变量,具有不同的字符串和值。这真的是你想要的吗?实际上我希望第二个成员是指向函数的指针这些函数都有相同的签名吗?然后可以使用
std::function
代替
T
。不,参数的类型可能不同。
arrayMembers<MyType> table;