template <typename T> struct A {
};
template <> struct A<int> {
struct B {
int f;
};
};
template <> struct A<bool> {
struct B {
int g;
};
};
template <typename T> constexpr int f() { return 0; }
template <> constexpr int f<int>() { return 4; }