从r值得到l值
Making l-value from r-value
本文关键字:值得 更新时间:2023-10-16
我有一个相当漂亮的get fnc,它返回指针到'a类型'。现在我想在fnc set中重用这个fnc来为get返回的类型设置一些值:
template<class Tag,class Type>
set(Type t, some_value)
{
get<Tag>(t) = value;
}
我唯一的问题是:因为get返回指针,而不是指针的引用,返回类型是一个右值,这在大多数情况下是好的,但不适合这个。是否有一种方法以某种方式将返回值更改为左值?
您可以简单地使用:
*get<Tag>(t) = value;
指针解引用的结果是一个l值
对指针解引用(使用*
操作符)产生一个引用。引用的类型取决于指针的类型。const T *
变为const T &
, T *
变为T &
。
get
返回一个指向非const
变量的指针,你可以这样写:
*get<Tag>(t) = value;
如果get
不满足这样的要求,你不能改变它,你必须给一个set
方法来代替。
相关文章:
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 在线程之间拆分任务总是值得的吗?
- 是否值得对齐变量?
- 如果在 2 个线程中使用,是否值得将size_t声明为 std::atomic?
- 是否值得使用位移在单个字节中存储多个小数据成员?
- C :是否值得使用static_cast避免使用数字的条件
- 矩阵乘法 - 库达值得吗
- 值得记住素数测试吗?
- 是否值得两次通过文件进行迭代,以创建最小的数据结构
- 几对性能问题(一个较大的向量与较小的块向量),值得存储迭代索引以进行矢量访问
- 对于基本类型来说值得
- 是否值得只包含type_traits以获取枚举的基础类型
- 在函数中传递只读向量时,冗长真的值得吗?const vector<const string>&
- 为了获得性能而避免多态性值得吗
- 将几行代码写成一行是有益的(就内存和空间复杂性而言)。值得吗?
- 为接口和实现提供单独的名称空间值得吗
- 最少的工作量值得生成一个新线程
- JNI "Optimization"值得吗?
- 如果我只需要它的几个函数,是否值得包含一个大型C++库
- 自我记录代码是否值得潜在的性能问题