質問編集履歴
7
棒線の追加
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
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
追記の追記
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() の削除
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
こんばんはをこんにちはに
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
追記の編集
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
補足の追加
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に関して、"依存名の検索は実際のテンプレート引数がわかるまで延期" = "依存名の検索はインスタンス化のタイミングまで延期"と考えると、インスタンス化されていないテンプレートはそもそも使えないので、テンプレート定義の中に依存名があってもなくても同じと考えられないでしょうか。
|