【发布时间】:2015-03-11 12:50:55
【问题描述】:
我正在阅读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.)。还有其他人吗?
【问题讨论】:
-
从技术上讲,它是一个指向零个或一个字符的数组的指针。
-
在这种情况下它并不重要,因为它只用于模板解析。在更现代的 C++ 中,您可以简单地将检查添加到模板列表并使用
enable_if。 -
对我来说这看起来像
char(*)[bool] -
是的@Hurkyl,在示例中它是一个布尔值。