C++ 如何将概念引用中定义的函数传递给模板函数?

C++ 如何将概念引用中定义的函数传递给模板函数?,c++,C++,我有一个功能: template<std::same_as<int&> T> void f(T value) {} 为什么编译器假定我使用的是常规类型而不是引用,我可以对此做些什么?除非您有转发引用,否则模板类型永远不会被推断为引用类型。相反,它获取引用引用的类型。在这种情况下,这意味着T被推断为int,并且与int&不匹配。相反,你可以使用 template<std::same_as<int> T> void f(T& valu

我有一个功能:

template<std::same_as<int&> T>
void f(T value) {}

为什么编译器假定我使用的是常规类型而不是引用,我可以对此做些什么?

除非您有转发引用,否则模板类型永远不会被推断为引用类型。相反,它获取引用引用的类型。在这种情况下,这意味着
T
被推断为
int
,并且与
int&
不匹配。相反,你可以使用

template<std::same_as<int> T>
void f(T& value) {}
模板
void f(T&value){}
它强制
T
成为
int
,然后
T&
使
value
成为传递给函数的对象的引用

template<std::same_as<int> T>
void f(T& value) {}