模板类参数用于模板类函数语法

Template class argument for template class function syntax

本文关键字:类函数 语法 参数 用于      更新时间:2023-10-16
template <typename T>
class Foo {
public:
    T val;
    Foo(T p_val) : val(p_val) {}
    T sum(Foo<T> other) { return val + other.val; }
};
int main() {
    Foo<int> f1(3);
    Foo<int> f2(5);
    std::cout << f1.sum(f2) << std::endl;
}

按预期打印8

如果我将成员函数签名更改为T sum(Foo other)(删除<T>),它仍然打印8。一般来说,我是否包括<T>有关系吗?我用的是Visual c++ 2015

template<...> class X中,名称X作为非模板指的是X<...>

所以<T>是多余的。这是合法的,但是多余的