기본적으로 boost :: function이하는 것과 같이 다양한 템플릿 변수 길이를 갖는 템플릿 클래스를 선언하기 위해 부스트 전 처리기를 사용하고 싶습니다.boost :: function이 다른 길이의 템플릿 매개 변수를 사용하여 템플릿 클래스를 지원하는 방법
#if !BOOST_PP_IS_ITERATING
#ifndef D_EXAMPLE_H
#define D_EXAMPLE_H
#include <boost/function>
#include <boost/preprocessor/iteration/iterate.hpp>
#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 2, "example.h"))
#include BOOST_PP_ITERATE()
#else
template<class T, BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), class T)>
class Example
{
boost::function<T, (BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), T))> func;
};
#endif
동일한 헤더 파일에서 다른 템플릿 변수 길이로 동일한 클래스를 선언하기 때문에 위의 코드는 분명히 작동하지 않습니다. 내가 성취하고자하는 것은 단일 파일을 포함시키고 boost :: function처럼 다양한 템플릿 변수 길이를 가진 클래스들을 정의하는 것이다.
#include "example.h"
Example<int, int, float> example1;
Example<double, int> example2;
나는 boost :: function 코드를 찾았지만 어떻게 작동하는지 알 수 없다. 어떤 아이디어?
가변성 템플릿을 사용하면 어떻게됩니까? –
나는 vs2010에서 일하고있다. 가변적 인 템플릿 – Jason
을 지원하지 않는다. 참고로, boost :: function <>'은 하나의 템플릿 인자를 취한다. – ildjarn