char(*)[int]在C ++中是什么意思?

阿尔弗雷德·布拉特鲁德

我正在SFINAE上阅读本文,并且发现了这对有趣的函数:

template<int I> void div(char(*)[I % 2 == 0] = 0) {
    // this overload is selected when I is even
}
template<int I> void div(char(*)[I % 2 == 1] = 0) {
    // this overload is selected  when I is odd
}

这很好用(g ++-4.9),但是我不太了解参数的类型(char(*)[int]-part)。还有谁做的吗?

毫米

char(*)[I % 2 == 0]表示指向char带有维的数组的指针I % 2 == 0指向维度数组的指针是非法的0,SFINAE说这会导致不考虑模板(与发生编译错误相反)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章