모든 유형의 매개 변수를 받아 들여야하는 함수가 있습니다. 따라서 템플릿을 사용합니다.Void를 함수 매개 변수로 전달
template <typename T>
void Function(T Parameter);
함수는 함수를 호출하는 것입니다. 내 실제 응용 프로그램에서 문자열 키가있는 콜백 맵이 있지만이 질문에는 중요하지 않습니다. 콜백은 반환 유형이 void이고 매개 변수 유형이있는 함수 포인터 여야합니다.
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T))Callback(Parameter);
}
콜백이 올바른 유형이라고 가정하면 다음과 같이 작동합니다.
Function<int>(42);
// should result in...
(function<void(int))Callback(42);
그러나 어떤 경우에는 void
을 매개 변수로 전달하고 싶습니다.
Function<void>(void);
// should result in...
(function<void(void)>Callback(void);
여기서 알 수 있듯이 매개 변수로는 아무 것도 입력하지 않아도됩니다. void
. 그러나 인수로 void
을 전달할 수 없기 때문에 typename이 틀릴 것이라는 오류가 있습니다.
void
을 함수 인수로 전달할 수 있습니까?
아마도 '부스트'가있을 것입니다. 그러나 'function'을 작성했다면 어떻게 될까요? –
'template void Function (Args ...)'와 같은 가변 템플릿이 있어야합니다. 며칠 전에이 문제에 관해 논의했습니다. 주위를 검색하십시오. –
템플릿 전문화 작업과 비슷합니다. 불행히도 클래스 외 기능 – SomeWittyUsername