什么和&&函数签名结束时(在右括号后)?

时间:2013-03-10 07:37:10

标签: c++

Workarounds for no 'rvalue references to *this' feature中,我看到以下成员函数(转换运算符):

template< class T >
struct A
{
    operator T&&() && // <-- What does the second '&&' mean?
    {
        // ...
    }
};

第二对&&是什么意思?我不熟悉这种语法。

1 个答案:

答案 0 :(得分:20)

这是一个ref-value限定符。这是一个基本的例子:

// t.cpp
#include <iostream>

struct test{
  void f() &{ std::cout << "lvalue object\n"; }
  void f() &&{ std::cout << "rvalue object\n"; }
};

int main(){
  test t;
  t.f(); // lvalue
  test().f(); // rvalue
}

输出:

$ clang++ -std=c++0x -stdlib=libc++ -Wall -pedantic t.cpp
$ ./a.out
lvalue object
rvalue object

取自here