이것은 TTL에서이다 : 그것은이 TypeList에 typeswitching을 위해 사용되는유형 목록에 대한 런타임 유형 스위치가 중첩 된 if 대신 스위치로 사용됩니까?
////////////////////////////////////////////////////////////
// run-time type switch
template <typename L, int N = 0, bool Stop=(N==length<L>::value) > struct type_switch;
template <typename L, int N, bool Stop>
struct type_switch
{
template< typename F >
void operator()(size_t i, F& f)
{
if(i == N)
{
f.operator()<typename impl::get<L,N>::type>();
}
else
{
type_switch<L, N+1> next;
next(i, f);
}
}
};
. 질문은 - 그들은 일련의 중첩 된 if를 통해 이것을 수행합니다. 단일 SELECT 문 대신이 유형 스위치를 수행하는 방법이 있습니까?
감사합니다.
실제 사용되는 구조는 무엇입니까? – Potatoswatter
최근의 clang은 이런 종류의 것을 점프 테이블로 변환 할 수 있습니다 : https://godbolt.org/g/Nco0Al, GCC는 (동일한 옵션으로) https://godbolt.org/g/4VL9e7 할 수 없습니다. – user877329