これは、定数PODオブジェクト定数自体のフィールドがないのはなぜですか?のフォローアップです。
ライブラリのヘッダーは、次のようなクラスGUIDを宣言します
static const GUID CLSID_EH264VD =
{ 0x96b9d0ed, 0x8d13, 0x4171, { 0xa9, 0x83, 0xb8, 0x4d, 0x88, 0xd6, 0x27, 0xbe } };
dllを登録せずに、dllから直接オブジェクトを作成する関数を作成したいので、各CLSIDをdll名にマップする必要があります。何かのようなもの
Create<CLSID_EH264VD>()
これは、次のような専門分野に依存します
template<>
struct dll<CLSID_EH264VD>
{
char const* filename = ""mc_dec_avc_ds.ax";
}
そのため、不明なdllを使用して未登録のクラスをインスタンス化しようとすると、コンパイル時エラーになります。
問題は、テンプレートをGUIDに特化できないことです。リンクされた質問によると、constexprは特殊化を可能にする方法でGUIDを宣言できますが、Visual C ++は最新バージョン(2012)ではconstexprをサポートしていません。回避策はありますか?