相关疑难解决方法(0)

std :: initializer_list {x,y,z}(CTAD)有效吗?

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)

c++ language-lawyer c++17

16
推荐指数
1
解决办法
252
查看次数

标签 统计

c++ ×1

c++17 ×1

language-lawyer ×1