C ++ - typedef / using for function template

时间:2015-08-12 16:45:32

标签: c++ templates c++11 c++14

我有一个以下功能模板:

template<class A, class C, class B>
A doFoo(const B &val)
{
  //do something with C
}

在我的cpp文件中,所有 doFoo 函数将与C的一种类型一起使用。有可能做这种typedef:

typedef myDoFoo<A, B> doFoo<A, ParticularC, B>

如果是 - 执行此操作的语法是什么?

3 个答案:

答案 0 :(得分:7)

只需定义另一个模板功能:

template<class A, class B>
A myDoFoo(const B &val)
{
  return doFoo<A,ParticularC,B>( val );
}

答案 1 :(得分:6)

你可以写一个函数:

template<class A, class B>
A myDoFoo(const B &val)
{
    return doFoo<A, ParticularC, B>(val);
}

答案 2 :(得分:2)

使用变量模板(自版本5开始在GCC中可用),您可以定义对函数的引用:

template<class A, class B> auto &myDoFoo = doFoo<A, ParticularC, B>;

或更明确地

template<class A, class B> A (&myDoFoo)(const B &) = doFoo<A, ParticularC, B>;