これはかなり可能ですが、これは可能かもしれませんが、テンプレートメタプログラミングで私よりも経験豊富な人が私を啓発します。私は、テンプレートを使用して自動化されたLUA機能結合システムを書いて、部分的特殊化を使用して機能タイプを抽出していますC++のテンプレートメタプログラミングを使用した関数型からの呼び出し規約の抽出
:
template<typename T, T FUNCTION> class Function_c;
template<typename R, R (*FUNCTION)()> class Function_c<R (*)(), FUNCTION>; //specialized version
問題があり、これは私に呼び出し規約の関数を教えてくれないので、(VS2012で32ビット)、__stdcallでコンパイルされず、__fastcallでクラッシュします。私は特定の呼び出し規約に対処するための別の特殊なバージョンを作成することができ、例えば:
template<typename R, R (__stdcall *FUNCTION)()> class Function_c<R (__stdcall *)(), FUNCTION>;
しかし、順列の数が手に負えなくなるし始めている:パラメータ倍の数の2(グローバル&メンバ関数を)倍最大数呼び出し規約
だから私は、コプパターン処理の量を減らすために、テンプレートパラメータ(実際には型ではないのでおそらくそうではない)として呼び出し規約を取得する方法があるのだろうかと思います。