我想为标记/命名元组创建一个模板类,因为每种类型的元组都与静态 std::string 相关联。
当创建一个新的标签元组时,我想通过以下方式调用它:
auto a = std::labeled_tuple<"key1", int, "key2", double>()
字符串的数量必须与提供的类型数量相匹配,显然长度是可变的。
从语法上讲,以下内容不正确,但它应该进一步阐明我想要的内容:
template<typename...template<std::string STR, typename Arg> T>
我想访问 STR... 和 T...
如有任何帮助,我们将不胜感激。
最佳答案
而是创建“标记”类型:
template <const char* Name, typename T>
struct labeled_type
{
static constexpr const char* name = Name;
T value;
};
然后使用常规 std::tuple
:
static constexpr const char key1[] = "key1";
static constexpr const char key2[] = "key2";
auto a = std::tuple<labeled_type<key1, int>, labeled_type<key2, double>>();
关于c++ - 配对可变参数模板(命名元组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711431/