在std::initializer_list<U>显式构造时,可以U推导出模板参数()(例如,使用类模板参数推导(CTAD))吗?
换句话说,我知道以下语句是有效的:
std::initializer_list<int> x1{1, 2, 3};
std::initializer_list<int> x2 = {1, 2, 3};
auto x3 = std::initializer_list<int>{1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但是以下陈述也有效吗?
std::initializer_list x1{1, 2, 3};
std::initializer_list x2 = {1, 2, 3};
auto x3 = std::initializer_list{1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
编译器不同意是否std::initializer_list可以推导的模板参数:
#include <initializer_list>
struct s {
s(std::initializer_list<int>);
};
void f() {
std::initializer_list x1{1, 2, 3}; // Clang ERROR; GCC OK; MSVC OK
std::initializer_list x2 = {1, 2, 3}; // Clang ERROR; GCC OK; MSVC OK
auto x3 = std::initializer_list{1, …Run Code Online (Sandbox Code Playgroud)