2017-09-25 9 views
2

C++ 17では、オーバーライド割り当てを行うことができるstd::aligned_allocとアライメント対応のnewが導入されていますが、std::allocatorはどうですか?オーバーライドされた型を処理しますか? N4659でstd :: allocatorはC++ 17でオーバーライドされた型を処理しますか?

+0

私は間違った答えを削除しました。コピー貼りのホラーストーリー...(私を落としてください...) –

+1

はい、http://www.open-std.org/jtc1/ sc22/wg21/docs/papers/2016/p0035r4.htmlは、実装を定義したテキストを削除しました。 –

+0

@MassimilianoJanes心配しないで、私はN4659(C++ 17 DIS)のセクションを見つけました。 – Jamboree

答えて

3

(C++ 17 DIS)、23.10.9.1 [allocator.members], bullet 2

T *は(size_t n)を割り当てます。

戻り値:サイズがのオブジェクトに対して適切に整列されたサイズn * sizeof(T)、の記憶域配列の最初の要素へのポインタ。 C++ 14と比較

、文

それは上に整列タイプは

をサポートしているかどうかを実装定義では、除去されています。したがって、std::allocatorは、C++でオーバーライドされた型をサポートする必要があります。

+0

uhm、N4659(私はwww.open-std.orgで見つけたpdfバージョン)は、私のオリジナルの答えに従ってそのまま読むことができます。つまり、オーバーライドされたタイプのサポートは実装定義です... –

+0

@MassimilianoJanes私はhttps: /github.com/timsong-cpp/cppwp、これはwww.open-std.orgにあるものではありません。 – Jamboree

+0

ok reading Marc Glisseのコメントはあなたが正しいことを明らかにしています(割り付け関数が今ではアライメントパラメータをとっていることを知っておいてよかったです)。 –

関連する問題