fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. class X {};
  5.  
  6. template<typename T>
  7. inline std::string foo(T && rhs) {
  8. return "bad";
  9. }
  10.  
  11. inline std::string foo(const X & rhs) {
  12. return "good const &";
  13. }
  14.  
  15. inline std::string foo(X & rhs) {
  16. return "good &";
  17. }
  18.  
  19. inline std::string foo(X && rhs) {
  20. return "good &&";
  21. }
  22.  
  23. int main() {
  24. std::cout << foo(X()) << std::endl;
  25. X x;
  26. std::cout << foo(x) << std::endl;
  27. std::cout << foo(static_cast<X const &>(x)) << std::endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 3028KB
stdin
Standard input is empty
stdout
good &&
good &
good const &