Ton*_*ion 29 c++ templates specialization
我正在阅读模板完整指南,它说如下:
它在哪里谈论类模板专业化.
但是,如果您专门化类模板,则还必须专门化所有成员函数.虽然可以专门化单个成员函数,但是一旦完成,就不能再专门化整个类了.
我实际上想知道这是怎么回事,因为你可以专门没有任何成员函数.它是说你不能只有一个成员函数的专业化,然后是另一个具有所有成员函数的专业化吗?
有人可以澄清一下吗?
Dav*_*eas 31
我认为这是指以下情况:
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;
}
int main() {
base<int> i;
i.foo(); // int
i.bar(); // bar
}
Run Code Online (Sandbox Code Playgroud)
完成后,您无法将完整模板专门化为其他任何东西,所以
template <>
struct base<int> {}; // error
Run Code Online (Sandbox Code Playgroud)