#include <iostream>
#include <utility>
struct Y
{
void h() noexcept;
void i();
};
enum Y_noexcept_value
{
h = noexcept(std::declval<Y>().h()),
i = noexcept(std::declval<Y>().i())
};
template<typename T>
struct X
{
void f() noexcept(Y_noexcept_value::h);
void g() noexcept(Y_noexcept_value::i);
};
template<typename T>
void X<T>::f() noexcept(Y_noexcept_value::h)
{
}
template<typename T>
void X<T>::g() noexcept(Y_noexcept_value::i)
{
}
int main()
{
std::cout << std::boolalpha
<< noexcept(std::declval<X<int>>().f()) << std::endl
<< noexcept(std::declval<X<int>>().g()) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnN0cnVjdCBZCnsKICAgIHZvaWQgaCgpIG5vZXhjZXB0OwogICAgdm9pZCBpKCk7Cn07CgplbnVtIFlfbm9leGNlcHRfdmFsdWUKewogICAgaCA9IG5vZXhjZXB0KHN0ZDo6ZGVjbHZhbDxZPigpLmgoKSksCiAgICBpID0gbm9leGNlcHQoc3RkOjpkZWNsdmFsPFk+KCkuaSgpKQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IFgKewogICAgdm9pZCBmKCkgbm9leGNlcHQoWV9ub2V4Y2VwdF92YWx1ZTo6aCk7CiAgICB2b2lkIGcoKSBub2V4Y2VwdChZX25vZXhjZXB0X3ZhbHVlOjppKTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgWDxUPjo6ZigpIG5vZXhjZXB0KFlfbm9leGNlcHRfdmFsdWU6OmgpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBYPFQ+OjpnKCkgbm9leGNlcHQoWV9ub2V4Y2VwdF92YWx1ZTo6aSkKewp9CgppbnQgbWFpbigpCnsKCXN0ZDo6Y291dCA8PCBzdGQ6OmJvb2xhbHBoYQoJICAgICAgICAgIDw8IG5vZXhjZXB0KHN0ZDo6ZGVjbHZhbDxYPGludD4+KCkuZigpKSA8PCBzdGQ6OmVuZGwKCSAgICAgICAgICA8PCBub2V4Y2VwdChzdGQ6OmRlY2x2YWw8WDxpbnQ+PigpLmcoKSkgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=