Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;使用临时对象rvalue初始化左值引用以及自动推断_C++_Visual C++_C++17 - Fatal编程技术网

C++ c++;使用临时对象rvalue初始化左值引用以及自动推断

C++ c++;使用临时对象rvalue初始化左值引用以及自动推断,c++,visual-c++,c++17,C++,Visual C++,C++17,我使用/std:c++17在MSVC中成功地执行了以下语句,没有任何编译错误 class A { public: A() { std::cout << "default constructor." << std::endl; } A(const A&) { std::cout << "const A&" << std::endl; } A(A&&a

我使用/std:c++17在MSVC中成功地执行了以下语句,没有任何编译错误

class A {
 public:
  A() {
    std::cout << "default constructor." << std::endl;
  }
  A(const A&) {
    std::cout << "const A&" << std::endl;
  }
  A(A&&) {
    std::cout << "A&&" << std::endl;
  }
  int a;
};

A& a = A();
auto& b = A();
A类{
公众:
(){

std::cout如果您使用
/Wall
标志编译,编译器将给出答案:

warning C4239: nonstandard extension used: 'initializing': conversion from 'A' to 'A &'
note: A non-const reference may only be bound to an lvalue

warning C4239: nonstandard extension used: 'initializing': conversion from 'A' to 'A &'
note: A non-const reference may only be bound to an lvalue
也就是说,根据C++17标准,该程序的格式确实不正确,但使用了MSVC非标准扩展。请注意,您的程序因
/std:latest
而被拒绝,这在MSVC方面似乎是一个不错的决定,因为这是一个相当危险的扩展