(-1) < static_cast(0)]>;"的目的是什么-6ren"> (-1) < static_cast(0)]>;"的目的是什么-这是来自 std::enable_if 教程中的示例。 这里有更多的上下文: // handle signed types template auto incr1(Int& target, Int a-6ren">
gpt4 book ai didi

c++ - "int[]"这里: "std::void_t(-1) < static_cast(0)]>;"的目的是什么

转载 作者:行者123 更新时间:2023-12-05 09:29:58 31 4
gpt4 key购买 nike

这是来自 std::enable_if 教程中的示例。

这里有更多的上下文:

// handle signed types
template<typename Int>
auto incr1(Int& target, Int amount)
-> std::void_t<int[static_cast<Int>(-1) < static_cast<Int>(0)]>;

From

  1. std::void_t 不应该接受一个类型作为模板参数吗?
  2. int[] 在此上下文中的目的是什么?

最佳答案

如果static_cast<Int>(-1) < static_cast<Int>(0)产量 true , int[static_cast<Int>(-1) < static_cast<Int>(0)]导致 int[1] ( true 可能是 convertedint (然后是 std::size_t )隐式地带有值 1 ),这是一个数组类型。

如果static_cast<Int>(-1) < static_cast<Int>(0)产量 false , int[static_cast<Int>(-1) < static_cast<Int>(0)]导致 int[0] ( false 可能是 convertedint (然后是 std::size_t )隐式地带有值 0 ),这是一个无效的数组类型和 SFINAE将从重载集中丢弃特化。 (array 的大小必须大于零(除非在 new[]-expression 中使用))。

关于c++ - "int[]"这里: "std::void_t<int[static_cast<Int>(-1) < static_cast<Int>(0)]>;"的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70151957/

31 4 0