小编Sas*_*tin的帖子

为什么gcc 6.4.0 c ++ 14会自动左移lvalue到rvalue

我遇到一个问题,gcc编译器将局部变量(非临时)作为函数的rvalue参数移动.我有一个简单的例子:

class A
{
public:
    A() {}

    A& operator=(const A&) { std::cout << "const A&\n"; return *this; }
    A& operator=(A&&) { std::cout << "A&&\n"; return *this; }
};

class B
{
public:
    B() {}

    B& operator=(const B&) { std::cout << "const B&\n"; return *this; }
    B& operator=(B&&) { std::cout << "B&&\n"; return *this; }

    template<class T> B& operator=(const T&) { std::cout << "const T& (T is " << typeid(T).name() << ")\n"; return *this; }
    template<class T> B& operator=(T&&) { std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ templates lvalue-to-rvalue move-assignment-operator c++14

3
推荐指数
1
解决办法
75
查看次数