gpt4 book ai didi

c++ - 奇怪的 SFINAE 代码

转载 作者:太空狗 更新时间:2023-10-29 20:02:40 27 4
gpt4 key购买 nike

我发现这段代码与 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
}

它是如何工作的?它看起来像一个未命名的参数数组,但我不明白下标如何帮助解决重载问题。

最佳答案

C++ 中的数组边界不能为零。如果表达式(例如,I % 2 == 0)为 false,则会转换为零,从而导致无效类型并因此导致替换失败。

本质上,它是 std::enable_if 的混淆版本。

关于c++ - 奇怪的 SFINAE 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com