小编Pee*_*ynt的帖子

C++:不允许void的部分函数专门化 - 替代解决方案?

我想我现在明白为什么部分函数模板被认为是混乱和不必要的,因此C++标准不允许这样做.然而,我会感谢一些帮助,重新措辞以下功能没有部分专业化.FWIW,该函数是非专业类的成员:

template <typename IMPL, typename RET>
RET call (functor <IMPL> func, 
          IMPL * impl)
{ 
  return func.call (impl);
}

template <typename IMPL>
void call <IMPL, void_t> (functor <IMPL> func, 
                          IMPL * impl) 
{ 
  func.call (impl);
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我不能重载函数的返回类型.另外,我想要专门研究的typename不用作函数参数 - 这也是为什么重载没有帮助的另一个原因.是的,我可以引入一个虚拟参数,强制重载,但这很难看,不是吗?

最后,为什么heck在C++中不是'void'类型?这会让事情变得更加一致......但我可能错过了完整的画面......

c++ templates function partial-specialization

4
推荐指数
1
解决办法
958
查看次数

标签 统计

c++ ×1

function ×1

partial-specialization ×1

templates ×1