为什么内联汇编不能是 constexpr?

Bad*_*dea 0 c++ assembly inline-assembly constexpr c++20

C++ 不允许 constexpr 内联汇编有充分的理由吗?为什么 C++20 中允许未计算的内联汇编表达式?

Nic*_*las 6

常量表达式的行为受定义该语言的 C++ 标准管辖。内联汇编的行为不是。根据定义,内联汇编不是 C++,因此 C++ 无法说明其中发生的情况。

为什么 C++20 中允许未计算的内联汇编表达式?

出于同样的原因,允许许多constexpr无法在编译时评估的构造。constexpr函数可以在运行时调用,如果运行时版本可以调用内联汇编,那就太好了。