我不能将typedef与模板一起使用

时间:2017-10-18 13:18:54

标签: c++ function templates pointers

我不能将typedef与模板一起使用,如何更改?语法错误“typedef模板是非法的”。我想对print()这样的函数使用:print<double>(1, 2, add);用于任何类型的数据。

    #include <iostream>
    using namespace std;

    template <typename type> /*typedef*/ type(*calculator)(type, type);

    template <typename type> inline const type& add(type x, type y) { return (type) x + y; }
    template <typename type> inline const type& sub(type x, type y) { return (type) x - y; }
    template <typename type> inline const type& mul(type x, type y) { return (type) x * y; }
    template <typename type> inline const type& dev(type x, type y) { return (type) x / y; }

    template <typename type> void print(type x, type y, calculator func) {
        cout << "(" << x << "," << y << ")=" << func(x, y);
    }

    int main(void) {
        print<float>(1, 2, add);
        print<float>(1, 2, sub);
        print<float>(1, 2, mul);
        print<float>(1, 2, dev);
    }

0 个答案:

没有答案