我正在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(*)[int]
char(*)[I % 2 == 0]表示指向char带有维的数组的指针I % 2 == 0。指向维度数组的指针是非法的0,SFINAE说这会导致不考虑模板(与发生编译错误相反)。
char(*)[I % 2 == 0]
char
I % 2 == 0
0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
点击生成二维码
我来说两句