Windows 用の CRTP ベースのラッパーがあります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 以前の世界にいるので、可変個引数テンプレートを使用できません。
この問題に対する既知の解決策はありますか、それとも上記の理想的でない解決策を使用する必要がありますか?