'将成员函数仅添加到类的专用模板
'Adding Member Function to only Specialized Template of Class
我有一个模板类,我想在模板的特定专业化中添加一个特殊函数。这个函数只对std::string模板有意义。
我展示了我目前是如何处理的。。。问题是,删除的函数仍然对所有模板类型可见,而不仅仅是我想要使用它的Match模板。
有没有更优雅的方法来处理这种困境
template<typename T>
class Match {
/*
*Class Definition
*
*/
void string_function() = delete;
};
template<>
void Match<Std::string>::string_function(){
//do something that only makes sense with strings
}
您可以考虑基类模板中的公共代码,并使用定制的特性进行派生的专门化。
template <typename T>
class BaseMatch { /* Common features across all specializations... */ };
template <typename T>
class Match : BaseMatch<T> { /* Generic case, no custom behavior to enforce */ };
template <>
class Match<std::string> : BaseMatch<std::string> {
void string_function() { /* ... */ }
};
void string_function() = delete;
它将从类作用域中解除分配函数,再次使用字符串定义函数。这就像你删除了一个gmail账户,然后试图登录,说无法登录,这是不可能的,对吧,我可以知道你为什么要删除比可以想出一些解决方案。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 调用专用模板时出错"no matching function for call to [...]"
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 模板专用化(按容器):value_type
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- '将成员函数仅添加到类的专用模板
- 添加具有模板专用化的方法
- 专用模板类并添加新接口
- X 的任何子类的专用类模板,无需向模板添加其他类型参数
- 在模板专用化中添加单个构造函数方法
- 为变量模板中给定的所有类型添加模板专用化
- 在std命名空间中添加模板专用化