使用 std::variant 作为映射类型的 std::map 复制列表初始化

问题描述

为什么这段代码会编译?

#include <string>
#include <variant>
#include <map>

void foo(std::map<int,std::variant<int,std::string>> map)
{}

int main()
{
    foo({{1,"1"},{2,2}});
}

我们有 {{1,2}} 的东西,std::map 应该用它来初始化。它可能与接受 std::map 和列表初始化的 std::initializer_list 构造函数有关。但我想知道 {{1,2}} 这个东西是怎么编译的?它有什么类型?在这种情况下,重载解析是如何工作的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)