以下のように書くために、よりクリーンな方法(重複の少ないコードを意味する)はありませんか?"Enable_if"構造体menber
template < bool condition >
class Test {
struct Foo1 {
int a;
};
struct Foo2 {
int a;
int b;
};
using type = std::conditional_t<condition, Foo1, Foo2>;
};
私がここでやりたいことは、構造体の単一のデータメンバーを有効または無効にすることです。だから、もし私が一つの構造体しか必要としないなら、それはいいだろう。
のような何か:
template < bool condition >
class Test {
struct type {
int a;
if constexpr(condition)
int b;
};
};
継承はどうですか? 'Foo2'を' Foo1'から継承させますか?それは少なくとも「重複コードの削減」を意味します。これは、オブジェクト指向言語で構造とクラスを拡張する "自然な"方法です。 –
@Someprogrammerdudeはい、それはコードが少なくなるだろうが、それは私が望んでいたものではありません。私はより多くの文脈を追加する必要があると思う。 –
@MathieuVanNevel:それはなぜあなたがそれを望んでいるのかを説明していないので、それは本当に「より多くのコンテキスト」ではありません。そして、あなたはそれをどのように使う予定ですか? –