fork download
  1. #include <iostream>
  2. #include <type_traits>
  3. using namespace std;
  4.  
  5. struct C { int m; };
  6. int i = 42;
  7. int&& f() { return std::move(i); }
  8.  
  9. static_assert(std::is_same<
  10. decltype(&C::m),
  11. int C::*>::value, "");
  12. static_assert(std::is_same<
  13. decltype(&(C::m)),
  14. int*>::value, "");
  15.  
  16. static_assert(std::is_same<
  17. decltype(i),
  18. int>::value, "");
  19. static_assert(std::is_same<
  20. decltype((i)),
  21. int&>::value, "");
  22.  
  23. auto x1= i;
  24. auto x2 = f();
  25. static_assert(std::is_same<
  26. decltype(x1),
  27. int>::value, "");
  28. static_assert(std::is_same<
  29. decltype(x2),
  30. int>::value, "");
  31. static_assert(std::is_same<
  32. decltype(f()),
  33. int&&>::value, "");
  34.  
  35. decltype(auto) x5 = i;
  36. decltype(auto) x6 = (i);
  37. decltype(auto) x7 = f();
  38.  
  39. static_assert(std::is_same<
  40. decltype(x5),
  41. int>::value, "");
  42. static_assert(std::is_same<
  43. decltype(x6),
  44. int&>::value, "");
  45. static_assert(std::is_same<
  46. decltype(x7),
  47. int&&>::value, "");
  48.  
  49. int main() {
  50. // your code goes here
  51. std::cout << "hello\n";
  52. return 0;
  53. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
hello