template <class Derived>
struct base {
static void f(int i)
noexcept(noexcept(Derived::g(i)))
{
Derived::g(i);
}
};
struct derived: base<derived> {
static void g(int) throw() {
}
};
int main()
{
derived::f(1);
}
dGVtcGxhdGUgPGNsYXNzIERlcml2ZWQ+CnN0cnVjdCBiYXNlIHsKICAgIHN0YXRpYyB2b2lkIGYoaW50IGkpCiAgICAgICAgbm9leGNlcHQobm9leGNlcHQoRGVyaXZlZDo6ZyhpKSkpCiAgICB7ICAKICAgICAgICBEZXJpdmVkOjpnKGkpOwogICAgfQp9OwoKc3RydWN0IGRlcml2ZWQ6IGJhc2U8ZGVyaXZlZD4gewogICAgc3RhdGljIHZvaWQgZyhpbnQpIHRocm93KCkgewogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBkZXJpdmVkOjpmKDEpOwp9Cg==