我有一个基于 CRTP 的 Windows 包装器HANDLE
:
#include <windows.h>
template<class T>
class HandleT
{
HANDLE handle;
operator HANDLE() const { return this->handle; }
static ULONG WaitForMultipleObjects(DWORD count, /* ??? */ objects[])
{
return WaitForMultipleObjects(count, ...);
}
};
class EventHandle : Handle<EventHandle>
{
//...
};
class FileHandle : Handle<FileHandle>
{
//...
};
我遇到的麻烦是,我不知道???
上面可以用什么代替。我不能说HandleT<T>
,因为它们可以是不同类型的句柄,它们不适合数组。而且我不想说HANDLE
,因为这样该函数根本不会对HandleT
对象起作用——用户不妨完全避免调用包装器。而且我不能使用可变参数模板,因为我还处于 C++0x 之前的世界。
这个问题有已知的解决方案,还是我只需要使用上面提到的非理想解决方案?