У меня есть оболочка на основе 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.
Есть ли известное решение этой проблемы, или мне просто нужно использовать неидеальныйРешение, упомянутое выше?