【发布时间】:2019-04-15 13:48:09
【问题描述】:
#include <initializer_list>
#include <utility>
template<class T>
struct test
{
test(const std::pair<T, T> &)
{}
};
template<class T>
test(std::initializer_list<T>) -> test<T>;
int main()
{
test t{{1, 2}};
}
我想了解为什么 initializer_list 的这个技巧可以编译。乍一看,{1, 2} 被视为initializer_list,但随后重新解释为pair 的列表初始化。
这里到底发生了什么,一步一步?
【问题讨论】:
标签: c++ language-lawyer c++17 initializer-list list-initialization