std::basic_string の libc++ 実装を見ていると、 1374 行目 (執筆時) でこれに遭遇しました。
enum {__alignment = 16};
この値は、後続のアラインメント計算で使用され、文字列サイズのリクエストはこの数値の倍数に切り上げられます。
メモリの断片化などを避けるために丸めが行われていることは受け入れられますが...
ここでハードコードされた16を数値として使用する背後に特定の論理的根拠があるのか 、それとも「ナイスな「ラウンド」数値」として使用されているだけなのか疑問に思います。
64 ビット マシンの16
場合alignof( std::max_align_t )
、 は になり、これにはある程度の意味があります。しかし、まったく同じ値__alignment
が 32 ビット アーキテクチャにも使用されるので、...?