このテンプレートが与えられた場合:
template <class A>
struct Something {
... // members common to all template instantiations for all A types
SpecialType member; // but not this - I want this to be conditional...
}
...「enable_if」を使用して、SpecialTypeメンバーを条件付きで存在させたい。つまり、テンプレートがA=SpecialCase1またはSpecialCase2タイプでインスタンス化されている場合のみです。他のすべての場合、SpecialTypeメンバーが欠落していることを望みます。
理由がわからない場合は、これは最適化に関するものです。つまり、構造体で無駄なペイロードを運ばないということです。私はテンプレートメタプログラミングの初心者ですが、どういうわけか「enable_if」と2つの「is_same」が必要であることを理解しています。
編集:一般的なC ++で(つまり、Boost固有のものなしで)それを行うことはプラスになります。