C++ 该功能模板是否专业化?

C++ 该功能模板是否专业化?,c++,C++,考虑: template<class Y> struct Foo { void bar(std::vector<Y>); template <class T> void bar(std::vector<T>); }; 模板 结构Foo { 空条(std::vector); 样板 空条(std::vector); }; 两个成员函数之间的关系是什么?一种是另一种的特殊形式吗?我不愿意这么说,因为第一个已经在Footype

考虑:

template<class Y>
struct Foo
{
    void bar(std::vector<Y>);

    template <class T>
    void bar(std::vector<T>);
};
模板
结构Foo
{
空条(std::vector);
样板
空条(std::vector);
};
两个成员函数之间的关系是什么?一种是另一种的特殊形式吗?我不愿意这么说,因为第一个已经在
Foo
type实例上“有点专业化”


如果
T
Y
相同,会发生什么情况?

bar
在您的示例中只是一个重载函数。如果
Y
T
相同,则重载解析将拾取
void bar(std::vector)
,因为它不是函数模板。

foo-fi;
foo<int> fi;

vector<int> vi;
vector<float> vf;

fi.bar(vi); // overload #1 gets chosen (more specialized for T=int)
fi.bar(vf); // overload #2 gets chosen
向量vi; 向量vf; fi.酒吧(vi);//重载#1被选中(对于T=int更专业) fi.bar(vf);//重载#2被选中
这看起来像是简单明了的重载。“会发生什么……”——给我们一个你有疑问的完整例子。对你来说,这个问题没有很好地表达出来,这很不寻常。你能改进一下吗?