重新定义 class<template-parameter-1-2> 的默认参数
redefinition of default argument for class<template-parameter-1-2>
我在这个 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... */ };
我在这个 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... */ };