1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include <iostream>
using namespace std;
template<typename T>
T f(T a)
{
return a + 1;
}
class A { //f 함수 테스트시 A 를 제외하고 생각하면 된다
public:
};
template <typename ... Types>
void s1(char cc, Types ... args)
{
}
template <typename ... Types>
void s1(int cc, Types ... args)
{
}
template <typename ... Types>
void s1(A cc, Types ... args)
{
}
template <typename ... Types>
void foo(Types ... args) //받는건 가변인자로 다 받는데
{
s1(args...); //인자 첫번째 타입에 따라 s1 함수가 호출 된다
//s1(f(args)...); //개별 인자들에 +1 을 다 한다음 기반 parameter pack 을 넘긴다
}
int main(int argc, char* argv[])
{
foo('s', A(), 3);
foo(A(), 's', 3);
foo(1, 2.0f, 3);
return 0;
}
|
cs |
반응형
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
[Modern C++] std::move , 간단 예시 (0) | 2022.03.03 |
---|---|
std::forward (0) | 2022.03.03 |
std::map::emplace_hint (0) | 2021.03.21 |
C++ 캐스팅 Static, Dynamic cast (0) | 2020.04.27 |
std::remove_reference (0) | 2019.12.31 |