std::条件嵌套用法 请,哦,最聪明的C++类型的大师,有人能解释为什么吗? 此代码失败,显示错误-我正在分析最新的C++-17 起草标准,但看不出失败的原因(在Linux上使用gcc-5.4.0): #包括 结构a {静态 void f(void){} }; 结构b {静态 void f(void){} }; 结构c {静态 void f(void){} }; 结构abc {静态 void f(void){} }; 结构ab {静态 void f(void){} }; 结构ac {静态 void f(void){} }; 结构体 {静态 void f(void){} }; 结构d {静态 void f(void){} }; 结构e {静态 void f(void){} }; #定义c3 类型定义 条件的

std::条件嵌套用法 请,哦,最聪明的C++类型的大师,有人能解释为什么吗? 此代码失败,显示错误-我正在分析最新的C++-17 起草标准,但看不出失败的原因(在Linux上使用gcc-5.4.0): #包括 结构a {静态 void f(void){} }; 结构b {静态 void f(void){} }; 结构c {静态 void f(void){} }; 结构abc {静态 void f(void){} }; 结构ab {静态 void f(void){} }; 结构ac {静态 void f(void){} }; 结构体 {静态 void f(void){} }; 结构d {静态 void f(void){} }; 结构e {静态 void f(void){} }; #定义c3 类型定义 条件的,c++,c++11,templates,typetraits,C++,C++11,Templates,Typetraits,那怎么办 typedef std::conditional <(C<8), std::conditional <C==7, abc, std::conditional <C==6, bc, std::conditional <C==5, ac, std::conditional <C==4, c, std::conditional <C==3, ab, std::conditional <C==2, b, std::conditional <

那怎么办

typedef
std::conditional
<(C<8), 
std::conditional
<C==7, abc,
std::conditional
<C==6, bc,
std::conditional
<C==5, ac,
std::conditional
<C==4, c,
std::conditional
<C==3, ab,
std::conditional
<C==2, b,
std::conditional
<C==1, a, d>::type>::type>::type>::type>::type>::type>::type,e
>::type T;
typedef
条件的

您忘记了另一个
std::conditional
s:

typedef std::conditional<C<8,  
    std::conditional<C==7, abc,
    std::conditional<C==6, bc,
    std::conditional<C==5, ac,
    std::conditional<C==4, c,
    std::conditional<C==3, ab,
    std::conditional<C==2, b,
    std::conditional<C==1, a, d>
    >::type
    >::type
    >::type
    >::type
    >::type
    >::type,e
>::type T;

typedef std::conditional你能让代码变得更不可读吗?@NeilButterworth:谢谢你的回复,但请坚持有用的评论-我以为我试图让代码尽可能简单,因此尽可能可读-我是怎么失败的?真正失败的代码要复杂得多。这是一条有用的评论——它告诉你,如果你希望得到帮助,你需要编写更清晰的代码。我希望你听说过缩进和间距之类的东西?是的。这就是答案!谢谢比开始第五次重读手册中的模板和类型特征章节要快得多。。。。
typedef
std::conditional
<(C<8), 
std::conditional
<C==7, abc,
std::conditional
<C==6, bc,
std::conditional
<C==5, ac,
std::conditional
<C==4, c,
std::conditional
<C==3, ab,
std::conditional
<C==2, b,
std::conditional
<C==1, a, d>::type>::type>::type>::type>::type>::type>::type,e
>::type T;
typedef std::conditional<C<8,  
    std::conditional<C==7, abc,
    std::conditional<C==6, bc,
    std::conditional<C==5, ac,
    std::conditional<C==4, c,
    std::conditional<C==3, ab,
    std::conditional<C==2, b,
    std::conditional<C==1, a, d>
    >::type
    >::type
    >::type
    >::type
    >::type
    >::type,e
>::type T;