私はテンプレートクラスを持っています。その中には、通常の関数があります。しかし、私はテンプレートクラスの特定のインスタンシエーションに対してのみ、この通常の機能を有効にしたいと思います。私はboost :: enable_ifを見て、それは私の必要性に正確に/私が自分の必要性のためにそれを使用することができないかもしれないかもしれません。テンプレートクラス関数の選択的有効化
typedef boost::mpl::vector< bool, int, double > CheckTypes;
template<class X>
class P
{
void init(int x,
typename boost::enable_if< boost::mpl::contains<CheckTypes, X> >::type* dummy = 0);
};
誰かがこの問題の解決方法を教えていただけますか?重要なことは、ソリューションが呼び出しコードから何も期待してはならないことです。クラスは明示的にインスタンス化されます。
ありがとう、 Gokul。
あなたが意味するか「有効」と言う「あなたがタイプX、Y、またはZをインスタンス化しない限り、この機能は存在すらしないのですか?」 – templatetypedef
私の例ではbool、int、doubleの関数しか存在しません。出来ますか? – Gokul
enable_ifは実際にうまく動作するはずです。 –