Conversion to `const Y` not applicable for `R&&` on clang
问题 The following code compiles fine with g++ (GCC) 4.7.1 20120721 , but fails with a recently build clang version 3.2 (trunk) . struct Y {}; struct X { operator const Y() const { return Y(); } }; void f(Y&& y) {} int main() { f(X()); return 0; } Changing the conversion operator to operator Y() const is sufficient to make the code compile on both compilers. Which compiler is actually standard compliant in this case? What does the standard actually say about this? The verbatim error as requested: