在Workarounds for no 'rvalue references to *this' feature中,我看到以下成员函数(转换运算符):
template< class T >
struct A
{
operator T&&() && // <-- What does the second '&&' mean?
{
// ...
}
};
第二对&&
是什么意思?我不熟悉这种语法。
答案 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。