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

What does char(*)[int] mean in C++?

我正在阅读 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 == 1] 是指向 I % 2 == 1 char 数组的指针类型。您可以使用 cdecl to solve such riddles. See also the spiral rule.

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