#include <iostream>
enum class testEnum
{
eNone = 0 ,
eOne = 1 ,
eTwo = 2
} ;
template < typename ... T >
void testClass ( testEnum nEnum , T && ... args )
{
int i = 0 ;
switch ( nEnum )
{
case testEnum::eNone:
//여기 처리 어떻게 할 수 있을까요?
// args [ 0 ] = 1 ;
// args [ 1 ] = 3.3 ;
( [ & ] {
++ i ;
if ( i == 1 ) args = 1 ;
if ( i == 2 ) args = 3.3 ;
} ( ) , ... ) ;
break ;
case testEnum::eOne:
// eOne에 대한 처리
break ;
case testEnum::eTwo:
// eTwo에 대한 처리
break ;
default:
// 기타 경우에 대한 처리
break ;
}
}
int main ( )
{
int a = 0 ;
float b = 0.0f ;
testClass ( testEnum::eNone , a , b ) ;
std::cout << "a: " << a << std::endl ; // 출력: a: 1
std::cout << "b: " << b << std::endl ; // 출력: b: 3.3
return 0 ;
}
가변 인자는 하나씩 처리해야 함.
C++ 17 이상에서 해야 함. 11 14 에서는 지원 안함.
가변 인자를 index 로 사용하고 싶으면
std::vector < std::any > && values_ { args ... } ;
해야하는데 reference 로 하든 pointer 로 해야 하는데 오류 발생함.
결국 값을 넘겨줄 수가 없음.
가변 인자는 26 에서 지원해준다는 말이 있는데 가봐야 알지.
C++의 매력일까 오버로딩으로 하면 되는걸 왜 어렵게 하려고 할까