none
reference引用,函数传递错误,vs2010执行成功,vs2013却输出错误,求解,BUG还是新标准更改? RRS feed

  • 问题

  • 同样一段代码,在2013中,输出就只有5,在main里面type mismatch就能够通过temp variable顺利输出,而传递给函数就无法输出。而在vs2010中,输出如书上所述,为525d,输出完整。

    请问2013的这个问题是因为BUG还是支持了新的c++标准,如果是,请问标准是什么?

    #include <iostream>


    using namespace std;

    void ref(const double &x);

    int main()
    {
    double m = 5;
    const double &r = m;
    cout << r;
    ref(10);
    cin.get();
    }

    void ref(const double &x)
    {
    cout << x*x <<"d";
    }

    2013年11月28日 13:56

答案

  • cout << r; // 该语句输出 5

    ref(10); // 该语句输出 100d

    在 VS2013 中也是这样。

    2013年12月2日 1:26
  • 你好:

    我在VS2010上运行了下你的代码,结果跟DroidXgnaW所说的一样。 cout<<r;//输出的是5, ref(10);//输出的是100d

    我在VS2013上直接运行你的代码,运行有错误:Error 1 error C2280: 'void std::ref<int>(const _Ty &&)' : attempting to reference a deleted function d:\2013test\consoleapplication1\consoleapplication1\consoleapplication1.cpp 19 1 ConsoleApplication1。

    我把代码改成了下面的:

    #include <iostream>
    
    //using namespace std;
    
    void ref(const double &x);
    
    int main()
    {
    	double m = 5;
    	const double &r = m;
    	std::cout << r;
    	ref(10);
    	std::cin.get();
    }
    
    void ref(const double &x)
    {
    	std::cout << x*x << "d";
    }
    
    结果跟在VS2010上的一样。

    2013年12月2日 7:57
    版主

全部回复

  • cout << r; // 该语句输出 5

    ref(10); // 该语句输出 100d

    在 VS2013 中也是这样。

    2013年12月2日 1:26
  • 你好:

    我在VS2010上运行了下你的代码,结果跟DroidXgnaW所说的一样。 cout<<r;//输出的是5, ref(10);//输出的是100d

    我在VS2013上直接运行你的代码,运行有错误:Error 1 error C2280: 'void std::ref<int>(const _Ty &&)' : attempting to reference a deleted function d:\2013test\consoleapplication1\consoleapplication1\consoleapplication1.cpp 19 1 ConsoleApplication1。

    我把代码改成了下面的:

    #include <iostream>
    
    //using namespace std;
    
    void ref(const double &x);
    
    int main()
    {
    	double m = 5;
    	const double &r = m;
    	std::cout << r;
    	ref(10);
    	std::cin.get();
    }
    
    void ref(const double &x)
    {
    	std::cout << x*x << "d";
    }
    
    结果跟在VS2010上的一样。

    2013年12月2日 7:57
    版主