我正在阅读 this article on 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] 表示指向维度为 charI % 2 == 0 数组的指针。拥有指向维度 0 数组的指针是非法的,SFINAE 表示这会导致不考虑模板(与发生编译错误相反)。

关于c++ - char(*)[int] 在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28987073/

10-11 23:12
查看更多