c++模板专门化问题
C++ Template Specialization problem
我有一个类似的语法:
template <class P>
class Foo : public P
{
public:
template <class T> Foo<P> & operator += (const T & v)
{
/*grind*/
return (*this);
}
};
当我尝试为特定类型(例如int
)专门化operator +=
(class Foo
之外)时,问题开始了。我可以这样做:
template <class P> Foo<P>& Foo<P>::operator += ( const int & v)
{...}
但是局部专门化是不可能的,实际上不可能知道P
的类型。
有什么解决办法吗?
谢谢,Raxvan .
与其将逻辑放在operator+=
中,不如将其放在helper类中,这可以根据需要部分专门化。
Node打败了我,但这里有一些代码可能会有所帮助(尽管我使用的是带有重载的裸函数,而不是helper类):
template <class P>
class Foo : public P
{
public:
template <class T> Foo<P> & operator += (const T & v)
{
detail::implement_plus_equal( * this, v );
return * this;
}
};
namespace detail {
template <class P>
void implement_plus_equal(Foo<P> & f, int v)
{
/* grind an int */
}
template <class P, typename T>
void implement_plus_equal(Foo<P> & f, T const & v)
{
/* grind a T */
}
}
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板专门化问题
- 在处理函数的部分模板专门化时,类型定义和参数包展开问题
- 这个模板部分专门化代码有什么问题?
- c++模板专门化问题
- 奇怪的c++模板方法专门化问题
- c++类模板专门化问题
- c++模板专门化方法问题