相关疑难解决方法(0)

运行中明确的ref-qualified转换运算符模板

给出以下转换运算符

struct A
{
    template<typename T> explicit operator T&&       () &&;
    template<typename T> explicit operator T&        () &;
    template<typename T> explicit operator const T&  () const&;
};

struct B {};
Run Code Online (Sandbox Code Playgroud)

我希望以下转换都是有效的,但有些会给出编译错误(实例):

A a;

A&&      ar = std::move(a);
A&       al = a;
const A& ac = a;

B&&      bm(std::move(a));  // 1. OK
B&&      bt(A{});           // 2. OK
B&&      br(ar);            // 3. error: no viable conversion from A to B
B&       bl(al);            // 4. OK
const B& bz(al);            // 5. …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue-reference conversion-operator c++11 ref-qualifier

8
推荐指数
1
解决办法
492
查看次数