gpt4 book ai didi

c++ - 将文字转换为左值

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

在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 以绑定(bind) lvalue_cast 的引用)。显然,将其使用限制在该时间间隔内取决于您。

关于c++ - 将文字转换为左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50090103/

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