トップページ > プログラム > 2019年09月09日 > G9jMTORL

書き込み順位&時間帯一覧

12 位/170 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000011100003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part144

書き込みレス一覧

C++相談室 part144
927 :デフォルトの名無しさん[]:2019/09/09(月) 17:07:18.30 ID:G9jMTORL
>>926
誤:とすると、 l というリスト右辺で指定した要素で初期化した状態で作成されますが、
正:とすると、 l というリストが右辺で指定した要素で初期化した状態で作成されますが、

誤:initiailer_list
正:initializer_list
C++相談室 part144
933 :デフォルトの名無しさん[sage]:2019/09/09(月) 18:33:38.13 ID:G9jMTORL
また質問させてください。
VS2019 の tuple の実装を調べていて、utility というヘッダファイルに以下の
ようなコードを見つけました。自分の直感では、これは、パターンマッチングを
していると思うんですが、実は、以下の (1) にマッチングする場合、
(2) にもマッチングする場合があります。しかし、現実には (1) にマッチングする
場合には、コンパイラは (2) を無視して (1) だけを採用する必要があると
思うんですが、template には、マッチングに優先順位があって、定義した
順にマッチングするかを調べて、一番最初にマッチングしたものを採用して
それ以後のものは無視すると言うような規則があるのでしょうか?

// (1)
template <class _This, class... _Rest>
struct _Tuple_element<_This, tuple<_This, _Rest...>> { // select first element
  using _Check_type = int;
  static_assert(
    is_void_v<typename _Tuple_element<_This, tuple<_Rest...>>::_Check_type>, "duplicate type T in get<T>(tuple)");

  using type  = _This;
  using _Ttype = tuple<_This, _Rest...>;
};

// (2)
template <class _Ty, class _This, class... _Rest>
struct _Tuple_element<_Ty, tuple<_This, _Rest...>>
  : _Tuple_element<_Ty, tuple<_Rest...>> { // recursive _Tuple_element definition
};
C++相談室 part144
935 :デフォルトの名無しさん[sage]:2019/09/09(月) 19:28:45.47 ID:G9jMTORL
>>934
誤:get<番号>(tpl) としたときに呼び出される以下のコードから使われます。
正:get<型名>(tpl) としたときに呼び出される以下のコードから使われます。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。