回答編集履歴
3
fix
answer
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
```cpp
|
4
4
|
#include<iostream>
|
5
|
+
#include<typeinfo>
|
5
6
|
|
6
7
|
template<class T>
|
7
8
|
void Test11()
|
@@ -12,12 +13,13 @@
|
|
12
13
|
template<class ...Args>
|
13
14
|
void Test10()
|
14
15
|
{
|
15
|
-
|
16
|
+
int swallow[] = {(Test11<Args>(), 0)...};
|
16
17
|
// 配列swallowの初期化リストとして下記のように展開され
|
17
18
|
// {(Test11<int>(), 0), (Test11<float>(), 0), (Test11<double>(), 0)}
|
18
19
|
// 初期化リストでは最左要素から右に向かって順番に評価されるため
|
19
20
|
// Test11<int>() → Test11<float>() → Test11<double>()
|
20
21
|
// の順で関数が呼び出される
|
22
|
+
(void)swallow; // 未使用変数の警告抑制
|
21
23
|
}
|
22
24
|
|
23
25
|
int main()
|
2
fix
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
比較的有名な(たぶん)パラメータパックの展開テクニックがあります。
|
2
2
|
|
3
3
|
```cpp
|
4
4
|
#include<iostream>
|
1
update
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
C++17以降で使えるパラメータパックの展開テクニックがあります。
|
2
|
+
|
1
3
|
```cpp
|
2
4
|
#include<iostream>
|
3
5
|
|