功能模板的类型

时间:2016-08-04 13:10:28

标签: c++ templates

以下内容在C ++中是可行的:

#include <iostream>

using namespace std;

template <typename T>
class FooClass
{
public:
    static void bar(T t, int i)
    {
        cout << t + i;
    }
};

template<template<typename> typename target, typename ...Args>
void intermediateForClass(Args ...args)
{
    target<int>::bar(1, args...);
}



int main(int, char**)
{
    intermediateForClass<FooClass>(2);
    return 0;
}

但实际上在这种情况下,我只有一个带静态方法的类,我只需要一个函数。但我无法设法对功能做同样的事情。 我认为这段代码可行,但它没有:

#include <iostream>

using namespace std;

template<typename T>
void foo(T t, int i)
{
    cout << t + i;
}

template<template<typename> typename target, typename ...Args>
void intermediateForFunctions(Args ... args)
{
    target<int>(1, args...);
}

int main(int, char**)
{
    intermediateForFunctions<foo>(2);
    return 0;
}

似乎实际上有一个类模板的有效类型,但不适用于函数模板。或者我做错了什么? 反正有没有让第二个版本工作?如果没有,为什么呢?

0 个答案:

没有答案