2015-01-11 3 views
0

(튜플과 비슷한) 템플릿 컨테이너를 작성하고 있습니다. 이제 생성자를 생성해야합니다. 그래서 이것을 다음과 같이 정의하면 :`cstdarg`의 매크로를 사용하여 일반 함수 인수에 액세스 할 수 있습니까?

template <typename ...P> class Container 
{ 
    /*blah-blah*/ 
public: 
    Container(P...) 
    { 
     /*blah-blah*/ 
    }; 
}; 

팩 확장 후에 쉼표로 구분 된 익명 인수가 표시됩니다. 아마도 이름을 생성하는 것은 불가능하기 때문에 'cstdarg'의 매크로를 사용하여 액세스 할 생각입니다. 물론, 템플릿을 사용하지 않는 첫 번째 인수를 만들어야하지만 질문은 다음과 같습니다.

'cstdarg'의 항목을 사용하여 일반 인수 (일반적인 인수가 아니라 사용 된 인수)에 액세스 할 수 있습니까? ... function parametr)?

+0

내게 XY 문제처럼 들립니다. 왜 그렇게하고 싶습니까? 나는 그것을 얻지 않는다. 그리고 그것은 합법적이지 않으며, 가변적 인 템플릿과 완전히 다른 방식으로 작동하지 않습니다. –

+1

모든 타입이 합법적으로'...'에 전달 될 수있는 것은 아닙니다 – Yakk

+0

@ πάνταῥεῖ 저는 튜플과 같은 클래스가 있습니다. 나는 그것을위한 생성자가 필요합니다. 생성자의 인수를 사용하여 클래스의 내용을 초기화하려고합니다. – HolyBlackCat

답변

2

아니요, cstdarg 매개 변수는 명명 된 매개 변수 (매개 변수 팩 포함)와는 다른 ABI 규칙에 의해 전달 될 수 있습니다. 일반적으로 cstdarg은 표준 레이아웃 (즉, C 유사)이 아닌 C++ 유형을 지원하지 않으므로 C++ 코드에서 사용해서는 안됩니다.