CTP 14와 CRTP (호기심 반복 템플릿 패턴) 및 Boost.Hana (또는 원하는 경우 boost::mpl
)의 조합을 사용하여 명시 적 선언없이 컴파일 타임 (또는 정적 초기화 시간)에 유형 목록을 작성 하시겠습니까? 예를 들어 C++ 14 메타 프로그래밍 : 컴파일/초기화시 형식 목록 자동 작성
#include <iostream>
#include <boost/hana/tuple.hpp>
#include <boost/hana/for_each.hpp>
namespace
{
struct D1 { static constexpr auto val = 10; };
struct D2 { static constexpr auto val = 20; };
struct D3 { static constexpr auto val = 30; };
}
int main()
{
// How to avoid explicitly defining this?
const auto list = boost::hana::tuple< D1, D2, D3 >{};
// Do something with list
boost::hana::for_each(list, [](auto t) { std::cout << t.val << '\n'; });
}
나는 종류의 명시 적 목록을 피하려고 - D1
, D2
, 그리고 D3
-에서 list
의 생성은 컴파일러에게 또는 클래스 선언 주위에 "이 클래스를 실행 목록에 추가"할 수 있어야하는 것처럼 수동으로 해당 목록을 유지해야한다는 것을 의미하기 때문입니다. (궁극적 인 목적은 공장 등록을 자동화하는 것입니다. 이것은 누락 된 메커니즘입니다.)
일부 상속 및/또는 메타 프로그래밍을 사용하여 컴파일 타임이나 정적 초기화 시간에 목록을 구성 할 수 있습니까?
http://b.atch.se/ 마음에 온다 -하지만위원회에 노력하고있다 그런 트릭을 허락하는 허점을 패치하십시오, 그래서 아마 그것을 사용해서는 안됩니다. – Quentin