我定义了两个重载函数,它们的声明如下
template <class T> void Foo(const T *p); // lets call this Foo_p
template <class T> void Foo(const T& r); // lets call this Foo_r
当我打电话
Foo( ptr_to_non_const );
Foo_r
被调用。我假设在寻找最佳匹配时,不断的限定条件会从指针中删除。因为T*
比T&
我预期的更专业,所以Foo_p
会被调用。
谁能指出我列出模板参数推导规则和匹配优先级的好资源。
在这种特殊情况下,我打算template <class T> void Foo(const T& r)
被称为非指针类型。这是否意味着我必须定义有条件和没有条件的功能const
。对于一个参数来说,这没什么大不了的,但我的函数需要多个指针,所以我想避免重复。任何建议,将不胜感激。