我想实现 STL 中存在的行为:当我们查看 vector 容器时,已知它具有 vector<bool>
添加方法的特化 flip()
。
是否可以实现这样的类扩展,而无需将整个类复制为特化并在其主体中添加新方法?
最佳答案
你可以SFINAE“特化”的方法
template <typename T>
class C
{
public:
// Common code...
template <typename U = T, std::enable_if_t<std::is_same<bool, U>::value, bool> = false>
void only_for_bool() {/*..*/}
};
C++20 将允许更好的语法:
template <typename T>
class C
{
public:
// Common code...
void only_for_bool() requires (std::is_same<bool, T>::value) {/*..*/}
};
关于c++ - 向类模板特化添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54851119/