如果我们有一行代码:
typedef bool (*cmp_func)(int i0, int i1);
如何将其更改为:
typedef bool (*cmp_func)(T i0, T i1);
其中T - typename?
答案 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具有类型别名,但这也存在一些限制(特别是它们不能专门化),有时需要将这两种方法结合起来。