#include <iostream>
template <typename T>
struct base {
void foo() { std::cout << "generic" << std::endl; }
void bar() { std::cout << "bar" << std::endl; }
};
/*
template <>
void base<int>::foo() // specialize only one member
{
std::cout << "int" << std::endl;
}
*/
template <>
struct base<int> {
void baz() { std::cout << "baz" << std::endl; }
}; // error
int main() {
base<int> i;
i.baz();
// i.foo(); // int
// i.bar(); // bar
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBiYXNlIHsKICAgdm9pZCBmb28oKSB7IHN0ZDo6Y291dCA8PCAiZ2VuZXJpYyIgPDwgc3RkOjplbmRsOyB9CiAgIHZvaWQgYmFyKCkgeyBzdGQ6OmNvdXQgPDwgImJhciIgPDwgc3RkOjplbmRsOyB9Cn07CgovKgp0ZW1wbGF0ZSA8Pgp2b2lkIGJhc2U8aW50Pjo6Zm9vKCkgLy8gc3BlY2lhbGl6ZSBvbmx5IG9uZSBtZW1iZXIKeyAKICAgc3RkOjpjb3V0IDw8ICJpbnQiIDw8IHN0ZDo6ZW5kbDsgCn0KKi8KdGVtcGxhdGUgPD4Kc3RydWN0IGJhc2U8aW50PiB7Cgl2b2lkIGJheigpIHsgc3RkOjpjb3V0IDw8ICJiYXoiIDw8IHN0ZDo6ZW5kbDsgfQp9OyAgLy8gZXJyb3IKCmludCBtYWluKCkgewogICBiYXNlPGludD4gaTsKICAgaS5iYXooKTsKLy8gICBpLmZvbygpOyAgICAgICAgIC8vIGludAovLyAgIGkuYmFyKCk7ICAgICAgICAgLy8gYmFyCn0=