Rokiのチラ裏

学生による学習のログ

2017-09-01から1ヶ月間の記事一覧

C++17 structured bindings で [ ] が使われる事情

C++

C++17 から導入される structured bindings は、複数の変数をタプルのようなオブジェクトから初期化する事ができる言語機能であるが、同機能における宣言では { } ではなく [ ] が使われる。 そもそも structured bindings の元々の提案では宣言の構文におい…

Usage of void() in a comma-separated list

C++

,で連結されたリストにおけるvoid()がどのような意味を持つのか。 a(), void(), b(); これは単純にオーバーロードされたoperator ,の呼び出しを防ぎ、言語による sequencing guarantees を保証するためのものである。void型のパラメータを持ったオーバーロー…

aggregate, aggregate initialization まとめ

C++

C++ における aggregate と aggregate initialization についてのメモ。まずバージョンごとの aggregate の定義から。 aggregate C++03 aggregate とは*1 配列または 以下の要件を満たすクラスである ユーザー定義コンストラクタがない private または prote…

n4687 C++ extensions for Concepts

C++

このエントリは、ドラフト入りしたコンセプト仕様全体を網羅するためのものである。尚、このエントリは P0734R0 と同提案が drafting された n4687 に基づいており、注釈などで付けられるセクション名は特に指定のない限り n4687 を示しているものとする。 …

Can non-type template parameters in c++17 be decltype(auto)?

stackoverflow.com template <decltype(auto)> // Is this legal by standard? struct X {}; 結論: 合法である。 n4659 17.1 Template parameters [temp.param]/paragraph 4 に non-type template parameters が持てる型について示されている(下線部は強調)。 A non-type te</decltype(auto)>…

non-type template parameter におけるデータの受け渡しから TMP で実数を含む value computing を行う

C++

push してからしばらく経っているが記録もかねて。C++ の non-type template parameter には浮動小数点型などの数値を直接与えることはできない。しかし、型の内部に内包させて Expression templates のようにその値を取り出そうとした瞬間に型情報に紐付い…