小编Mic*_*ael的帖子

C++ Variadic 模板方法特化

我有一些可变参数模板方法,如下所示:

    template<typename ... Args>
    void Invoke(const char* funcName, Args ... args) const;

    template<typename ... Args>
    void Invoke(const char* funcName, Args ... args) const
    {
        SPrimitive params[] = { args ... };
        SomeOtherInvoke(funcName, params, sizeof ... (Args));
    }
Run Code Online (Sandbox Code Playgroud)

这里 SPrimitive - 只是一个简单的结构,带有任何原始类型的构造函数。

我想为一些复杂类型再做一个 Invoke 定义。这是我的问题:是否可以在 c++ 11/14 中使可变参数模板方法专业化?我的意思是这样的(为简单起见,让我的类型为 int):

    template<int ... Args>
    void Invoke(const char* funcName, Args ... args)
    {
        int params[] = { args ... };
        SomeComplexInvoke(funcName, params, sizeof ... (Args));
    }
Run Code Online (Sandbox Code Playgroud)

这里我想要一个特殊化,它接受任何 int 类型的参数计数,所以我可以这样称呼它:

    Invoke("method", 2, 4 ,9);
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11

5
推荐指数
1
解决办法
1107
查看次数

标签 统计

c++ ×1

c++11 ×1

variadic-templates ×1