我试图转向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)