問題タブ [rationale]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - libc++ の std::basic_string の 16 バイト アラインメント パターンの背後にある理由は何ですか?
std::basic_string の libc++ 実装を見ていると、 1374 行目 (執筆時) でこれに遭遇しました。
この値は、後続のアラインメント計算で使用され、文字列サイズのリクエストはこの数値の倍数に切り上げられます。
メモリの断片化などを避けるために丸めが行われていることは受け入れられますが...
ここでハードコードされた16を数値として使用する背後に特定の論理的根拠があるのか 、それとも「ナイスな「ラウンド」数値」として使用されているだけなのか疑問に思います。
64 ビット マシンの16
場合alignof( std::max_align_t )
、 は になり、これにはある程度の意味があります。しかし、まったく同じ値__alignment
が 32 ビット アーキテクチャにも使用されるので、...?
c++ - 何のために std::as_const() が必要ですか?
C++11 は私たちに与えてくれましたstd::add_const
。C++17 では、新しい構造 - がありstd::as_const()
ます。前者const
は、提供するタイプの前に a を追加するだけです。2番目のものは、型特性ではなく、適切な(aのテンプレート)関数であり、同じことを行うようです-型が右辺値参照である場合を除いて、その場合は使用できません。
を提供する動機がよくわかりませんstd::as_const()
。に加えて、なぜそれが必要なのstd::add_const
ですか?