编译器如何知道C++常量计算不会触发未定义的行为?

问题描述C++标准要求编译器在C++常量计算中检查未定义的行为。在thistalk中,ChandlerCarruth指出,在检查UB时"您将耗尽检测错误的能力",而且在一般情况下,检测UB与haltingproblem相关,因此可以证明无法确定。他指的不是conexpr中的UB,

发布:2023-01-03 标签:c++undefined-behaviorlanguage-lawyerconstexpr


C++20 P0784R7非瞬时分配太脆弱vs.P1004R2常量表达式std::VECTOR

问题描述我想在C++20中创建一个广泛的constexpr数据存储库。数以万计的本机C++对象作为&q;文本段&即请求分页加载到进程中并在实例之间共享(生成代码)。对象相互引用,需要通过各种属性、交叉引用等进行索引,所有这些都希望在编译时完成。这需要constexpr(关联)容器

发布:2022-10-16 标签:c++c++20constexprstdvector


使用consteval而不是conexpr函数有什么好处?

问题描述我知道需求的不同,我最感兴趣的是它带来的代码质量带来的好处。我能想到的几件事:读者只需阅读函数签名即可知道该函数是在编译时计算的编译器可能会发出较少的代码,因为constevalFN从不在运行时使用(这只是推测,我没有这方面的真实数据)不需要有变量来强制ctfe,最后的示

发布:2022-10-16 标签:c++c++20constexprconsteval


Std::Memcpy即使在C++20中也不是常量的原因是什么?

问题描述我知道,在编译时复制任意内存块并不总是可能的,但既然我们得到了stexpr常量、虚方法和算法,为什么不能也复制emcpy呢?它也是一种算法。更多,C++20std::bit_cast看起来很像std::memcpy解决办法reinterpret_cast,但它确实是con

发布:2022-10-16 标签:c++c++20constexpr


是否允许类范围内的常量表达式变量的初始值设定项引用该变量?

问题描述以下代码:structS{staticconstexprintrolling_sum[4]{0,rolling_sum[0]+1,rolling_sum[1]+2,rolling_sum[2]+3};};被clang接受(版本12测试),但被GCC拒绝(版本11测试),错

发布:2022-10-16 标签:c++language-lawyerconstexprc++14


如何在编译时确定元组元素的偏移量?

问题描述我需要在编译时确定元组的某个索引元素的偏移量。我尝试了此函数,从https://stackoverflow.com/a/55071840/225186(接近尾声)复制,template<std::size_tI,typenameTuple>constexprstd::pt

发布:2022-10-16 标签:tuplesc++memberconstexproffset


C++20 constexpr 容器将如何工作?

问题描述作为constexprstd::字符串和constexprstd::vector已被C++20接受,这些将如何使用?链接的论文在细节上非常短.我们是否需要指定特殊的constexpr分配器,使编译时字符串/向量与其正常等效项不兼容?Asconstexprstd::stri

发布:2022-10-16 标签:c++containersstlc++20constexpr


constexpr 用指针初始化

问题描述我正在尝试使用指向int的指针初始化constexpr声明,该指针是一个const对象.我也尝试用非const类型的对象来定义对象.Iamtryingtoinitializeaconstexprdeclarationwithapointertointwhichisacon

发布:2022-10-16 标签:constantsc++pointersconstexpr


constexpr 与静态 const:更喜欢哪一个?

问题描述Fordefiningcompile-timeconstantsofintegraltypeslikethefollowing(atfunctionandclassscope),whichsyntaxisbest?staticconstintkMagic=64;//(1)

发布:2022-10-16 标签:constantsc++c++11constexpr


const vs constexpr 变量

问题描述以下定义有区别吗?constdoublePI=3.141592653589793;constexprdoublePI=3.141592653589793;如果不是,C++11中首选哪种风格?Ifnot,whichstyleispreferredinC++11?推荐答案我相

发布:2022-10-16 标签:variablesconstantsc++c++11constexpr