小编RyA*_*azi的帖子

在C++ 17中使用空列表初始化构造函数时的编译错误

我试图转向C++ 17时遇到了一个奇怪的问题.问题是在C++ 17中有些东西(我不确定是什么)在默认构造函数的情况下使列表初始化的工作方式不同.我试图搜索https://en.cppreference.com/w/cpp/language/list_initialization以获取更多信息,但我没有找到任何看起来相关的信息.

是否有人知道下面的代码在C++ 14中编译但在C++ 17中编译B{}而不是B()?(我在gcc 8.2和7.3以及icc 19中尝试过它)

struct A{
protected:
    A() {}
};

struct B : public A {};


B f(){
    return B(); //compilation OK
    //return B{}; //compilation error
}
Run Code Online (Sandbox Code Playgroud)

c++ list-initialization c++17

21
推荐指数
1
解决办法
1301
查看次数

标签 统计

c++ ×1

c++17 ×1

list-initialization ×1