私はstd::alignment_of
タイプの形質とすぐに出会う友人std::alignment_of_v
を見つけました。彼らは具体的にはalignof
の平凡な呼び出しに相当するように設計されているように見えます。また、_v
ヘルパーの将来の追加は、それが単なるレガシービットではないことを示しています。`std :: alignment_of`対` alignof`
std::alignment_of
(_v
)の使用方法は、alignof
の場合はどうなりますか?
私はstd::alignment_of
タイプの形質とすぐに出会う友人std::alignment_of_v
を見つけました。彼らは具体的にはalignof
の平凡な呼び出しに相当するように設計されているように見えます。また、_v
ヘルパーの将来の追加は、それが単なるレガシービットではないことを示しています。`std :: alignment_of`対` alignof`
std::alignment_of
(_v
)の使用方法は、alignof
の場合はどうなりますか?
ほとんど完全に冗長です。 @Revolverが指摘しているように、彼らは別の論文に紹介されており、alignment_of
はほぼそのままboost
に由来しています。
しかし、それはその形質が役に立たないという意味ではありません。
template<class...>class
は、他のtemplate
に渡して、メタプログラミングで使用することができます。 alignof
のような演算子は、メタプログラミング機能に渡す前にtemplate<class>class alignment_of
と書く必要があります。
と同じことが、std::size_of<class>
テンプレートを必要とすると言えるでしょう。彼らはstd
にすべての::value
integral_constant
型テンプレートを席巻し、_v
変数テンプレートを追加したので
...
_v
の添加をしました。どのようなものが価値があるものか、絵画を描かれず、ほとんど無意味なものであるかを考えてみましょう。それを行うには、価値のあるものを選ぶ努力をするよりも簡単です。機能が廃止されていないという証拠ではありません。
メタ機能自体の有用性は私の心を超えていませんでした。それは非常に良い点です、ありがとう! – Quentin
std::alignment_of
は、ブースト型形質のポートとして導入されています。これは、C++ 11とalignof
というキーワードよりも前です。この特性はalignof
演算子に取って代わられましたが、主に互換性の目的で保持されていました(したがってboost::
をstd::
に置き換えることができます)。_v
変数別名がライブラリの他の部分との整合性のために導入されました。
あなたの答えからは、別々に導入されたかのように見えます(C++ 11以降)。 – edmz
@black技術的には別々に導入されました。私の答えのポイントは、それが標準に含める前に、それがプレC++ 11ライブラリの一部であったということでした。 –
'alignment_of'はTR1にありました。 –
* gnu-alignof-expression * :-)ではなく、式で使用するときに真のエラーが発生する。 – Jarod42