C++ 문제가 있습니다. 템플릿 함수에 전달 된 형식 인수를 기반으로 형식을 생성하고 싶습니다.함수 호출을 기반으로 형식을 생성하는 C++ 메타 프로그래밍 문제/도전
설명해 드리겠습니다. 고려해야 할
X<int>();
X<double>();
다른 예
A a;
a.M<int>();
a.M<double>();
다음 a.Z()
실행 예
class A {
template<class B> M() { }
void Z() {
// NOTE: Here I want to call to X on each type that was feed it to M.
X<N1>();
X<N1>();
...
X<NN>();
}
template<class B> X() { }
};
... 독특한 유형 다음
A a;
a.M<int>();
a.M<int>();
a.M<double>();
a.M<double>();
a.Z()
의지는 여전히 ... 실행 내가 M. 확인에 대한 호출에 따라 A 형을 생성하고
X<int>();
X<double>();
주의! A 클래스는 템플릿 형식이 아니기 때문에 개념적으로 불가능하다고 생각합니다. 그런 식으로 변할 수는 없습니다. 사실 C++의 어떤 유형에서도 가능하지 않습니다 (제 생각에). 하지만 그 아이디어를 얻길 바랍니다.
메타 프로그래밍을 사용하여이 문제에 직면 할 수있는 방법을 기대하지만 조언이나 해결책 또는 참조를 환영합니다.
왜 이렇게할까요? – ecatmur
@ecatmur 우리는 어떤 종류의 객체를 생성 할 때 일반적인 프로그래밍과 최적화를 사용하고 있으며 매우 깨끗한 방법으로 리소스를 정리해야합니다. –
컴파일 타임에'aZ()'를 확장하려면, 명령'aM();'과'aM ();'는 실행시에는 연속적이지만 컴파일시에는 완전히 관련이 없습니다. 어때요? A a; a.Z(); 또는 A a; a.M () .Z();'? –
aschepler