템플릿 속임수와 부스트 :: any가 모두 포함 된 라이브러리를 작성하고 있습니다. 나는 기본적으로이가 어디 상황으로 실행했습니다boost :: any and templates
boost::any a1, a2, a3, a4;
을 ... 그리고 나는이처럼 보이는 함수를 호출해야합니다
이template <typename A1, typename A2, typename A3, typename A4>
void somefunc (A1 a1, A2 a2, A3 a3, A4 a4);
은 내가 음란 중첩 된 시리즈에 의존 수를 if 문은 10 개의 별개 유형을 처리한다고 가정하면 10,000 개의 if 문입니다! 부스트 전처리 기가 여기에 도움이 될 수 있지만 이것은 여전히 끔찍한 해결책입니다.
이런 종류의 광기에 의지하지 않고 boost :: any의 내용으로 템플릿 함수를 호출하는 더 좋은 방법이 있습니까? 내가 말할 수있는 한, 존재하지 않는다.
만 사용자를 :: any' 인스턴스는 런타임시에 정확한 값을 얻을 수 있습니다 (하드 코딩 된 타입을 제공합니다), 컴파일 타임에 유형이 지워 졌기 때문에'boost :: any'에 포함 된 값으로 그 함수를 호출 할 수 없습니다. 당신이 해결하려고하는 더 큰 문제는 무엇입니까? 'boost :: any'는 꽤 낮은 수준의 것들입니다. – GManNickG
모든'any' 객체를 하나의 객체로 만들고 한번에 모두 설정하는 경우 정확한'somefunc' 인스턴스 ('& somefunc)에 대한 포인터도 안전하게 지정하십시오. –
Xeo
@GManNickG 내가 해결하려고하는 더 큰 문제는 한쪽에 루아 바인딩의 자동 생성과 부스트 :: 임의의 비동기 함수에서 결과를 보유하는 모든 것을 포함합니다. 이 상황에서는 둘 중 어느 것도 다른 것으로 대체 될 수 없습니다. – Xtapolapocetl