【发布时间】:2017-08-09 00:18:26
【问题描述】:
我只是想了解与“直接列表初始化的自动规则”相关的新 c++17 更改
stackoverflow 问题线程中很少有答案像这样做不安全 Why is direct-list-initialization with auto considered bad or not preferred?
尝试了选择的答案之一来理解
#include <typeinfo>
#include <iostream>
struct Foo{};
void eatFoo (const Foo& f){}
int main() {
Foo a;
auto b{a};
eatFoo(b);
std::cout << "a " << typeid(a).name() << '\n';
std::cout << "b " << typeid(b).name() << '\n';
}
但令我惊讶的是,它编译时没有任何警告或编译错误 输出
a 3Foo
b 3Foo
Program ended with exit code: 0
这是否意味着现在可以安全地使用 auto 进行直接初始化
比如这样的
auto x { 1 };
【问题讨论】: