根据函数的可变参数构建特定的元组

问题描述 投票:0回答:1

我喜欢使用std::tuple构建“地图”,键是std::string,值是任何类型,其定义如下:

template<typename... Args>
using Map = std::tuple<std::pair<std::string, Args>...>;

而且我有一个函数MakeMap,它接受可变参数,将参数转换为Map并返回它:

template<typename... Args>
Map<???> MakeMap(Args&&... args) {
    ???
}

并且我希望MakeMap的参数采用std::string, type1, std::string, type2, ...格式(例如键和值):

auto map = MakeMap("key1", 42, "key2", "hello world"); // OK
auto map = MakeMap(1, 2);                              // expects compiling error
auto map = MakeMap("key1", 42, "key2");                // expects compiling error

因此,如何实现函数MakeMap(在C ++ 11中),以使上述调用语法起作用?

谢谢。

c++ c++11 variadic-templates variadic-functions template-meta-programming
1个回答
0
投票

以下是实现此目的的方法(进行了一些更改)

© www.soinside.com 2019 - 2024. All rights reserved.