#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 ;

}


실행 확인.




https://gall.dcinside.com/board/view/?id=programming&no=2725965&s_type=search_subject_memo&s_keyword=C++&page=1

c 고수없는 프밍갤이냐안녕하세여 대학교2학년 프로그래밍 공부하고있는 학생입니다#include #include enum class testEnum{    egall.dcinside.com





가변 인자는 하나씩 처리해야 함.


C++ 17 이상에서 해야 함. 11 14 에서는 지원 안함.


가변 인자를 index 로 사용하고 싶으면


std::vector < std::any > && values_ { args ... } ;


해야하는데 reference 로 하든 pointer 로 해야 하는데 오류 발생함.


결국 값을 넘겨줄 수가 없음.


가변 인자는 26 에서 지원해준다는 말이 있는데 가봐야 알지.