【发布时间】:2015-08-02 10:47:34
【问题描述】:
最近写了一个很简单的类。
class C
{
public:
void AddString(std::initializer_list<std::pair<const char*,int>> x)
{
//irrelevant
}
};
int main()
{
C c;
c.AddString({ {"1",1}, {"2", 2}, {"3", 3} });
.... //other unimportant stuff
return 0;
}
令我惊喜的是,它编译并正常工作。有人可以向我解释一下编译器如何能够推断出嵌套大括号初始化器是用于std::pair 的吗?我正在使用 MSVS 2013。
【问题讨论】:
标签: c++ c++11 initializer-list type-deduction list-initialization