我正在阅读 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]
表示指向维度为 char
的 I % 2 == 0
数组的指针。拥有指向维度 0
数组的指针是非法的,SFINAE 表示这会导致不考虑模板(与发生编译错误相反)。
关于c++ - char(*)[int] 在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28987073/