얼마나 많은 템플릿 인수가 비어 있는지를 알려주는 boost::mpl::eval_if
(또는 유사한 함수)의 결과에 따라 일부 인수가있는 매크로를 호출하려고합니다. 내가 인수 EmptyType
을 얼마나 많은에 따라 일부 콘텐츠와 함께 내 수업을 채우기 위해 노력하고boost :: mpl을 사용하면 얼마나 많은 템플릿 클래스가 "비어 있지"않은지를 알 수 있으며이 숫자로 일부 매크로를 호출 할 수 있습니까?
struct EmptyType { };
template<class arg1=EmptyType, class arg2=EmptyType, class arg3=EmptyType>
class my_class
{
eval_if<is_not_same<arg1, EmptyType>, FILL_MY_CLASS_DEFINE(1)> else
eval_if<is_not_same<arg2, EmptyType>, FILL_MY_CLASS_DEFINE(2)> else
eval_if<is_not_same<arg3, EmptyType>, FILL_MY_CLASS_DEFINE(3)>;
};
: 우리는 다음과 같은 몇 가지 의사가 있다고. Boost.MPL/Preprocessor 또는 다른 Boost 라이브러리를 통해 어떻게 C++ 03에서 그렇게 할 수 있는지 궁금합니다.
사전 처리기가 먼저오고 원시 텍스트 대체를 정의하므로 (전처리 기) 및 템플릿 코드 (컴파일러)가 잘 작동하지 않습니다. – Xeo