Mar*_*urg 13 c++ stl visual-c++ constexpr visual-studio-2022
我不确定我是否太na\xc3\xafve 或者只是太无知。
\n但为什么下面的内容有所不同呢?
\nconstexpr auto nInitialCapacity1 = std::wstring().capacity();\nconst auto nInitialCapacity2 = std::wstring().capacity();\n
Run Code Online (Sandbox Code Playgroud)\n在 Visual Studio 2022/17.0.5 中,上述代码导致:
\nnInitialCapacity1 = 8\nnInitialCapacity2 = 7\n
Run Code Online (Sandbox Code Playgroud)\n为什么(编译时)版本的结果constexpr
不等于const
调用的版本?
感谢您的任何解释!
\nArt*_*yer 21
Microsoft 的 STL在常量计算上下文中禁用短字符串优化,因此它改为分配内存。
分配始终大于 2 的幂,因此容量(不包括最后一个L'\0'
)始终是 2 的幂。
在非常量求值版本中,短字符串缓冲区可以容纳 8 个字符,其中一个是 a L'\0'
,因此容量为 7。
归档时间: |
|
查看次数: |
847 次 |
最近记录: |