gpt4 book ai didi

c++ - 类 的默认参数的重新定义

转载 作者:行者123 更新时间:2023-11-30 02:27:37 25 4
gpt4 key购买 nike

我在这个 SFINAE 上遇到了一些编译器问题。看起来它在引发此错误之前没有解析模板。这是代码:

template<typename Sig, typename = typename std::enable_if<!std::is_pointer<Sig>::value>::type>
class GLFunction { /* class def... */ };

template<typename FP, typename = typename std::enable_if<std::is_pointer<FP>::value>::type>
class GLFunction { /* class def... */ };

你知道我怎样才能做到这一点吗?

谢谢。

最佳答案

阅读错误,它告诉您出了什么问题:您不能重新定义默认参数,您只能提供一次。

你想做什么?为什么你两次定义相同的模板?其中之一是部分特化吗?

为什么你不能像这样用简单的方法来做呢?

// Primary template, with default argument:
template <typename Sig, bool = std::is_pointer<Sig>::value>
class GLFunction { /* class def... */ };

// Partial specialization used for pointers:
template <typename FP>
class GLFunction<FP, true> { /* class def... */ };

关于c++ - 类 <template-parameter-1-2> 的默认参数的重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41515147/

25 4 0