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

質問編集履歴

7

棒線の追加

2018/12/30 10:53

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -50,7 +50,6 @@
50
50
  質問1: case: 2 の S{}() は、get()が定義される際になぜ評価されないのでしょうか。local struct S はテンプレートではないので、インスタンス化を抑制するconstexpr ifは関係なく、case: 1 と同様に評価されるのではないでしょうか...? それとも、local struct S はテンプレート引数Tに依存しているのでしょうか...
51
51
 
52
52
  ~~質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
53
-
54
53
  (追記)
55
54
  質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。~~
56
55
 

6

2018/12/30 10:53

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -49,9 +49,9 @@
49
49
 
50
50
  質問1: case: 2 の S{}() は、get()が定義される際になぜ評価されないのでしょうか。local struct S はテンプレートではないので、インスタンス化を抑制するconstexpr ifは関係なく、case: 1 と同様に評価されるのではないでしょうか...? それとも、local struct S はテンプレート引数Tに依存しているのでしょうか...
51
51
 
52
- 質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
52
+ ~~質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
53
53
 
54
54
  (追記)
55
- 質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。
55
+ 質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。~~
56
56
 
57
57
  (追記の追記) すみません...質問2はなかったことにしてください...

5

追記の追記

2018/12/30 10:47

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -52,4 +52,6 @@
52
52
  質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
53
53
 
54
54
  (追記)
55
- 質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。
55
+ 質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。
56
+
57
+ (追記の追記) すみません...質問2はなかったことにしてください...

4

constexpr S() の削除

2018/12/30 10:28

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,6 @@
9
9
  #include <type_traits>
10
10
 
11
11
  struct S {
12
- constexpr S() = default;
13
12
  constexpr auto operator()() const -> decltype(false) {
14
13
  return false;
15
14
  }
@@ -35,7 +34,6 @@
35
34
  template<typename T>
36
35
  constexpr T get() {
37
36
  struct S {
38
- constexpr S() = default;
39
37
  constexpr auto operator()() const -> decltype(false) {
40
38
  return false;
41
39
  }

3

こんばんはをこんにちはに

2018/12/29 06:25

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  #constexpr if と local struct の評価のタイミングについて
2
- こんばんは!またよろしくお願いします!
2
+ こんにちは!またよろしくお願いします!
3
3
  ペコリ(o_ _)o))
4
4
 
5
5
  初めに、次のコードはコンパイルエラーになります。case: 1

2

追記の編集

2018/12/29 04:33

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -54,4 +54,4 @@
54
54
  質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
55
55
 
56
56
  (追記)
57
- 質問2に関して、"依存名の検索は実際のテンプレート引数がわかるまで延期" = "依存名の検索はインスタンス化のタイミングまで延期"と考えると、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。
57
+ 質問2に関して、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。

1

補足の追加

2018/12/29 03:34

投稿

alphya
alphya

スコア124

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,7 @@
51
51
 
52
52
  質問1: case: 2 の S{}() は、get()が定義される際になぜ評価されないのでしょうか。local struct S はテンプレートではないので、インスタンス化を抑制するconstexpr ifは関係なく、case: 1 と同様に評価されるのではないでしょうか...? それとも、local struct S はテンプレート引数Tに依存しているのでしょうか...
53
53
 
54
- 質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
54
+ 質問2: constexpr ifとtwo-phase name lookupは関係があったのでしょうか。ずっとそう思っていたのですが、constexpr ifは"テンプレート引数に依存しているものの実体化を遅延する"と考えると、名前の検索のタイミングは関係ないような気がします...。
55
+
56
+ (追記)
57
+ 質問2に関して、"依存名の検索は実際のテンプレート引数がわかるまで延期" = "依存名の検索はインスタンス化のタイミングまで延期"と考えると、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。