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