找回密码
 欢迎注册
楼主: gxqcn

[讨论] 如何优雅地获取常量数列中某个值?

[复制链接]
发表于 2018-10-11 12:39:21 | 显示全部楼层
inline constexpr auto SIGMA( std::size_t n ) noexcept
{
    return std::begin( { 0.0, 0.3085375, 0.6914625, 0.9331928, 0.9937903, 0.9997674, 0.9999966 } )[ n ];
}


我不确定你同事的这段代码是否肯定能在 编译期计算出来。因为std::begin好像不是constant expression。

https://en.cppreference.com/w/cpp/language/constant_expression
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-10-11 13:27:23 | 显示全部楼层
试过了,可以的:std::begin, std::cbegin,标准库对  std::begin(std::initializer_list) 进行了特化。

可以用 static_assert 调用到其值,说明是在编译期可计算出来的。

点评

这个static_assert 的说法可有出处,^_^  发表于 2018-10-14 17:57
赞  发表于 2018-10-13 20:27
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-24 17:20 , Processed in 0.020657 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表