首页 > 解决方案 > 如何在编写模板模板函数时使用类型别名

问题描述

我有一个模板类如下。

template <class T>
class Point
{
    T x;
    T y;
    using value_type = T;
    Point() {}
    Point(T a, T b)
    {
        x = a;
        y = b;
    }
};

我想编写一个函数来添加 x 和 y 值并以定义类的类型返回 x+y。一种方法是使用模板模板,如下所示:

template <typename T2, template <typename> class T1>
T2 sum(T1<T2> p)
{
    return p.x + p.y;
}

我想知道是否可以使用类中定义的类型别名并避免为 sum 函数编写模板模板并获得类似的结果?这里指出了类似的问题,但没有讨论类型别名的使用。

标签: c++

解决方案


你当然可以。

template <typename T>
typename T::value_type sum(T p)
{
    return p.x + p.y;
}

推荐阅读