fork download
  1. #include <iostream>
  2. #include <utility>
  3.  
  4. struct Y
  5. {
  6. void h() noexcept;
  7. void i();
  8. };
  9.  
  10. enum Y_noexcept_value
  11. {
  12. h = noexcept(std::declval<Y>().h()),
  13. i = noexcept(std::declval<Y>().i())
  14. };
  15.  
  16. template<typename T>
  17. struct X
  18. {
  19. void f() noexcept(Y_noexcept_value::h);
  20. void g() noexcept(Y_noexcept_value::i);
  21. };
  22.  
  23. template<typename T>
  24. void X<T>::f() noexcept(Y_noexcept_value::h)
  25. {
  26. }
  27.  
  28. template<typename T>
  29. void X<T>::g() noexcept(Y_noexcept_value::i)
  30. {
  31. }
  32.  
  33. int main()
  34. {
  35. std::cout << std::boolalpha
  36. << noexcept(std::declval<X<int>>().f()) << std::endl
  37. << noexcept(std::declval<X<int>>().g()) << std::endl;
  38. return 0;
  39. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
true
false