teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

refinement

2020/11/13 04:22

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [`std::conjunction`メタ関数](https://cpprefjp.github.io/reference/type_traits/conjunction.html)は、テンプレート引数に指定したメタ関数の **インスタンス化を短絡評価** します。質問中にある記述では、(2)`std::is_same`メタ関数のインスタンス化が遅延評価されるのですが、その引数に指定する`typename T::value_type`型は`check`メタ関数において有効な型でなければなりません。
4
4
 
5
- ```
5
+ ```c++
6
6
  template <class T>
7
7
  using check = std::conjunction<
8
8
  std::is_same<T, Hoge>, // (1)

1

update

2020/11/13 04:21

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,12 +1,12 @@
1
1
  > std::conjunctionは短絡評価すると書かれていたため、問題ないと思ったのですが間違っていたようです。
2
2
 
3
- [`std::conjunction`メタ関数](https://cpprefjp.github.io/reference/type_traits/conjunction.html)は、テンプレート引数に指定したメタ関数の **インスタンス化を短絡評価** します。質問中にある記述では、`std::is_same`メタ関数のインスタンス化が遅延評価されるのですが、その引数に指定する`typename T::value_type`型は`check`メタ関数において有効な型でなければなりません。
3
+ [`std::conjunction`メタ関数](https://cpprefjp.github.io/reference/type_traits/conjunction.html)は、テンプレート引数に指定したメタ関数の **インスタンス化を短絡評価** します。質問中にある記述では、(2)`std::is_same`メタ関数のインスタンス化が遅延評価されるのですが、その引数に指定する`typename T::value_type`型は`check`メタ関数において有効な型でなければなりません。
4
4
 
5
5
  ```
6
6
  template <class T>
7
7
  using check = std::conjunction<
8
- std::is_same<T, Hoge>,
8
+ std::is_same<T, Hoge>, // (1)
9
- std::is_same<typename T::value_type, int>
9
+ std::is_same<typename T::value_type, int> // (2)
10
10
  >;
11
11
  ```
12
12