使用enable_if专门化结构模板

时间:2017-02-23 04:19:07

标签: c++ sfinae enable-if

我试图创建一个模板类,它将使用不同的签名实现回调,具体取决于它是用一种类型还是两种类型实例化。

export default debug = {
    myfunction: myFunction
};

现在我想添加代码,这样如果在实例化' OtherClass'时没有指定,那么ParserCallbackSwitch将是:

struct NoIntermediate
{
};

template<typename R, typename I>
struct ParserCallbackSwitch
{
     using type = std::function<bool(const std::string &, R&, I&)>;
}

template<typename R, typename I = NoIntermediate>
class OtherClass
{
public:
    typedef ParserCallbackSwitch<R, I>::type ParserType;

}

请注意,在这种情况下,ParserCallbackSwitch :: type是一个只有两个参数的函数。

我希望能够做到以下几点:

template<typename R, typename I>
struct ParserCallbackSwitch
{
      using type = std::function<bool(const std::string &, R&)>;
}

我无法弄明如何在OtherClass<int, float> p; // p::ParserType = std::function<bool(std::string &, int &, float &); OtherClass<int> q; // q::ParserType = std::function<bool(std::string &, int &); 类型的情况下部分指定ParserCallbackSwitch(即我没有指定)

解决方案:基于以下回复。这是我最终使用的代码。

NoIntermediate

0 个答案:

没有答案