c++ - C++ 模板中的 const 引用

标签 c++ templates reference constants

在泛型类型 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/

相关文章:

c++ - 返回对迭代器的引用是一个好习惯吗? (这还有道理吗)?

c++ - unix minishell char 转换成 **char

c++ - 可以根据任何属性对对象数组进行排序的函数模板

java - JAVA中类的引用大小

c++ - Q_ASSERT 发布构建语义

c++ - 使用 new 运算符返回指针。删除该放在哪里?

c++ - 派生类的成员函数不关心模板参数

c++ - 用于类构建的 2 个模板化构造函数与可变参数模板的组合。如何?

c++ - const T*& 和 const T* 不会在函数重载时产生歧义

php - 第 20 行 .../test6_2.php 中的解析错误 : syntax error, 意外 'new' (T_NEW)