質問編集履歴
2
最終的にやりたかったことはこれらの関数をクラスのメンバ関数にして実装することでした。クラスの形に修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
どなたかご教示いただける方よろしくお願いします。(当初のコードを修正しています。)
|
15
|
+
どなたかご教示いただける方よろしくお願いします。(当初のコードをクラスメンバ関数に修正しています。)
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -48,39 +48,47 @@
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
-
|
51
|
+
struct Foo{
|
52
52
|
|
53
|
-
bool
|
53
|
+
bool res=false;
|
54
54
|
|
55
|
-
///再帰関数
|
55
|
+
///再帰 最後の関数
|
56
56
|
|
57
|
-
|
57
|
+
bool constexpr arg_check(){return true;}
|
58
58
|
|
59
|
-
|
59
|
+
///再帰関数
|
60
60
|
|
61
|
-
|
61
|
+
template < int head, int... Tail>
|
62
62
|
|
63
|
-
|
63
|
+
bool constexpr arg_check (head, int ...tail){///error
|
64
64
|
|
65
|
+
static_assert(head < N);
|
66
|
+
|
67
|
+
return arg_check(tail...);///error
|
68
|
+
|
65
|
-
}
|
69
|
+
}
|
66
70
|
|
67
71
|
|
68
72
|
|
69
|
-
template<int ... args>
|
73
|
+
template<int ... args>
|
70
74
|
|
71
|
-
auto constexpr func(){
|
75
|
+
auto constexpr func(){
|
72
76
|
|
73
|
-
static_assert(arg_check(args));///error
|
77
|
+
static_assert(arg_check(args));///error
|
74
78
|
|
75
|
-
|
79
|
+
res=true;
|
76
80
|
|
81
|
+
}
|
77
82
|
|
83
|
+
};
|
78
84
|
|
79
85
|
|
80
86
|
|
81
87
|
int main(){
|
82
88
|
|
89
|
+
Foo f;
|
90
|
+
|
83
|
-
func<200,10>();///200でエラーを検出したい
|
91
|
+
f.func<200,10>();///200でエラーを検出したい
|
84
92
|
|
85
93
|
}
|
86
94
|
|
1
当初のコードでfunc関数とarg_check関数を上下入れ替えました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
どなたかご教示いただける方よろしくお願いします。
|
15
|
+
どなたかご教示いただける方よろしくお願いします。(当初のコードを修正しています。)
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -46,14 +46,6 @@
|
|
46
46
|
|
47
47
|
constexpr int N=100;
|
48
48
|
|
49
|
-
template<int ... args>
|
50
|
-
|
51
|
-
auto constexpr func(){
|
52
|
-
|
53
|
-
static_assert(arg_check(args));///error
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
49
|
|
58
50
|
|
59
51
|
///再帰 最後の関数
|
@@ -72,7 +64,19 @@
|
|
72
64
|
|
73
65
|
}
|
74
66
|
|
67
|
+
|
68
|
+
|
75
|
-
|
69
|
+
template<int ... args>
|
70
|
+
|
71
|
+
auto constexpr func(){
|
72
|
+
|
73
|
+
static_assert(arg_check(args));///error
|
74
|
+
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
76
80
|
|
77
81
|
int main(){
|
78
82
|
|