重新定义类<template-parameter-1-2>

时间:2017-01-06 22:09:09

标签: c++ c++11 templates metaprogramming generic-programming

我在这个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... */ };

你知道我怎么做到这一点吗?

THX。

1 个答案:

答案 0 :(得分:3)

阅读错误,它告诉你错误:你不能重新定义默认参数,你只能提供一次。

你想做什么?为什么要两次定义相同的模板?其中一个是否意味着部分专业化?

为什么你不能像这样简单地做到这一点?

// 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... */ };