#include <iostream>
template<typename T> struct Bar_common {
static void common() {
std::cout << "come on\n";
}
};
template<typename T> struct Bar : Bar_common<T> {
static void hi() {
std::cout << "hi!\n";
}
};
struct DummyT {};
template<> struct Bar<DummyT> : Bar_common<DummyT> {};
int main() {
Bar<int>::common();
Bar<int>::hi();
Bar<DummyT>::common();
//Bar<DummyT>::hi();
}