Template + Typedef C ++

时间:2017-05-09 20:57:47

标签: c++ templates typedef

如果我们有一行代码:

typedef bool (*cmp_func)(int i0, int i1);

如何将其更改为:

typedef bool (*cmp_func)(T i0, T i1);

其中T - typename?

2 个答案:

答案 0 :(得分:6)

从C ++ 11开始:

template <typename T>
using cmp_func = bool (*)(T, T);

答案 1 :(得分:2)

没有模板typedef,但您可以在模板中包含typedef:

template <typename T> 
struct Foo {
    typedef bool (*cmp_func)(T i0, T i1);
};
int main() {
    Foo<int>::cmp_func f;
}

或者从C ++ 11开始,您可以通过type aliasing

执行相同操作
template <typename T>
using cmp_func = bool(*)(T,T);

另请注意,即使C ++ 11具有类型别名,但这也存在一些限制(特别是它们不能专门化),有时需要将这两种方法结合起来。