将文字转换为左值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文字转换为左值相关的知识,希望对你有一定的参考价值。
在C中,有一个compound literal的概念,可用于获取任何文字并使其可寻址。例如:
int* p = &(int){0};
C ++中不存在复合文字。 C ++中是否有另一个可以将文字转换为左值的结构?例如:
// Something semantically equivalent to this, but without the need of a declaration
int n = 0;
int* p = &n;
编辑:
有一个函数或类型来创建解决方案是好的,只要不需要一个内联语句来促进其使用。例如,int* p = new int(0);
每个使用实例需要两行:使用它的一行,以及删除分配的范围末尾的一行。
解决方案必须在标准C ++中可行;没有扩展。
答案
你可以定义
template<class T>
T& lvalue_cast(T &&t) {return t;}
它接受文字(除其他外)。临时lasts直到完整表达的结尾词汇包含其创建(大概是materialization绑定lvalue_cast
的参考)。显然,将其使用限制在该间隔取决于您。
以上是关于将文字转换为左值的主要内容,如果未能解决你的问题,请参考以下文章