gpt4 book ai didi

c++ - 如何将模板类型的常量性应用于另一种类型

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:06 26 4
gpt4 key购买 nike

我想引用模板类中的值。模板类可以是 const 或非常量,因此值引用需要反射(reflect)这一点。在 f() 中,如何将 T 的常量性应用于 value_ref 声明?

class X
{
public:
typedef int value_type;
value_type v;
};

template<typename T>
void f(T & x) {
// needs constness of T applied to T::value_type
typedef typename T::value_type & value_ref;
auto lambda = [](value_ref v){}; // can't use auto in MSVC2010
lambda(x.v);
}

void g() {
X x;

X & r = x;
f(r); // works

X const & cr = x;
f(cr); // error: cannot convert from 'const X::value_type' to 'value_type &'
}

最佳答案

使用自动怎么样?

template<typename T>
void f(T & x) {
auto &r = x.v;
}

关于c++ - 如何将模板类型的常量性应用于另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com