在泛型类型 T 的 C++ 模板中,我可以使用
const T &
获取对常量 T 的引用。但是,如果现在 T 本身是引用类型(例如 T = int &),则上述术语解析为
int &
而不是
const int &
这很有意义,因为任何引用本身总是不变的。但是,还有没有办法要求一个
const T &
如果 T 本身是引用类型?
编辑:要评估的示例代码(g++ 编译器):
template <typename T> class TemplateClass
{
public:
void foo(const T &bar) { }
};
int main()
{
TemplateClass<int &> x;
x.foo(0); // <-- compile error: no conversion from int to int&
return 0;
}
最佳答案
删除引用:
template<typename T>
void Test(const typename std::remove_reference<T>::type & param)
{
param = 20;
}
现在它可以按预期工作了。
关于c++ - C++ 模板中的 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302638/