什么是潜在评估表达式?
What is a potentially-evaluated expression?
我正在阅读有关ODR使用的信息,我遇到了这个:
潜在计算表达式 ex 中的变量 x 是 ODR 使用的 除非满足以下两个条件:
什么是潜在评估表达式?
更新:我可能只是在向下滚动页面时找到答案:
在上述定义中,潜在评估是指表达式 不是未计算的操作数(或其子表达式(,例如 大小的操作数和表达式 e 的一组潜在结果为 出现在 e 中的一组(可能是空的(id 表达式, 组合如下:
但不确定这是否是一般的意思+无论如何我真的不明白他们的解释。另外,为什么说潜在的结果而不仅仅是结果?
用最简单的术语来说,潜在评估正是它所说的:表达式有机会被评估。这包括除sizeof(ex)
、decltype(ex)
、typeid(ex)
和noexcept(ex)
以外的任何内容。除了在这些情况下,ex是潜在的评估。
关于 odr 使用,这意味着x只有在潜在评估ex时才被视为 odr 使用。也就是说,x被odr使用的必要条件是ex必须被潜在地评估。这可以实现诸如
struct S
{
static float f; // declared but not defined
};
decltype(&S::f) p1; // since &S::f isn't potentially evaluated, this is well-formed
float* p2 = &S::f; // this is ill-formed
相关文章:
- 什么是潜在评估表达式?
- 它可能的 C++ 正则表达式评估器与 Lambda 像 Ruby 一样?
- 表达式未评估为常数两个级别的constexpr函数(编译器错误?)
- 在新表达式中,在内存分配后评估了初始化器
- 布尔表达式的奇怪评估
- 如何使"短路评估"在"折叠表达式"中也可用?
- 我如何评估来自CIN的变量的表达式
- 折叠表达式评估顺序
- 为什么在未评估的操作数中不允许使用lambda表达式,而是允许在恒定表达式的未评估部分中
- 评估潜在常量表达式期间的未定义行为
- Infix表达式评估
- 编写C++模板以评估表达式指针错误
- 使用堆栈评估后缀表达式时出现分段错误
- JS与C++表达式评估
- C++ 表达式评估。"评估"是什么意思?
- C++ 业务规则表达式解析器/评估
- 非常常见的表达式评估
- 为什么我的数学表达式评估函数不能在Windows上工作
- C++ 表达式评估:"Under The Hood"会发生什么?
- Boost Spirit Parser可选表达式评估