模板函数的专门化可以是虚的吗?
Can specializations of a template function be virtual?
例如,
class A {
template<typename T> T DoStuff();
template<> virtual int DoStuff<int>() = 0;
};
Visual Studio 2010说没有,但我有一种有趣的感觉,我只是把语法搞砸了。成员函数模板的显式完全特化可以是虚拟的吗?
显式特化在类中是不合法的。即使你可以让它部分专门化,你仍然会遇到"模板不能是虚拟的"的问题。
n3290,§14.5.2规定:
成员函数模板不能是虚函数。
并给出了这个例子:
template <class T> struct AA {
template <class C> virtual void g(C); // error
virtual void f(); // OK
};
在继续声明成员函数模板也不计算虚覆盖之前,
根据c++ 98标准,成员函数模板不能是虚的。http://www.kuzbass.ru: 8086/docs/isocpp/template.html。
-3-成员函数模板不能是虚的。(例子:
template <class T> struct AA { template <class C> virtual void g(C); // error virtual void f(); // OK };
您可以通过使用常规的非模板虚函数重载函数模板来获得类似的效果。
相关文章:
- 尝试根据类中 typedef 的存在来专门化模板函数
- 如何基于模板化类的基类专门化成员函数
- 专门化模板覆盖函数/避免对象切片
- 如何使用模板化类专门化模板化函数?
- 线程 std::调用未知类型,无法专门化函数错误
- 如何在编译时专门化大型模板函数中的小部分
- 模板函数,其中一个参数需要专门化,而另一个不需要
- 错误 C2893 无法专门化函数模板'unknown-type std::invoke(_Callable &&,_Types &&...)'
- 从 std 命名空间中专门化函数模板的想法有多糟糕?
- 为模板函数专门化一个模板类
- 基于参数值的c++模板成员函数专门化
- 如何确定函数专门化的主模板
- 等价参数的c++函数专门化
- 基于运行时值调用不同的模板函数专门化
- 跨库的模板函数专门化符号匹配
- 模板函数专门化,c++
- 如何使用type_traits或模板函数专门化来整合模板方法
- 如何在子类中重载模板化函数(专门化)
- 可变模板函数:专门化头/尾和空基准情况
- 不允许void的部分函数专门化-替代解决方案