没有任何"清洁"写下面的方法(我的意思是重复代码少)?
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;
};
};
答案 0 :(得分:1)
我不知道这对你来说是否“干净”,但是......你可以用这种方式编写一个自动继承(某种)类.then
(不幸的是,它可以完成但是在Foo
}之外
Test
和// common part
template <bool>
struct Foo
{ int a; };
// only when `Cond` is true
template <>
struct Foo<true> : public Foo<false>
{ int b; };
成为
Test
以下是完整的编译示例
template <bool Cond>
struct Test
{ using type = Foo<Cond>; };