gpt4 book ai didi

c++ - void_t 特化为什么主模板必须具有默认值 = void?

转载 作者:行者123 更新时间:2023-11-30 01:47:40 25 4
gpt4 key购买 nike

<分区>

我有一个关于 void_t 元函数的问题,在这个视频中显示 https://www.youtube.com/watch?v=a0FliKwcwXE以及在 41:25 提出的问题。

我将尝试用这段代码展示我的问题:

template<typename _Tp, typename _Up, typename = void>
class __is_assignable_helper_af2: public std::false_type
{
};


template<typename _Tp, typename _Up>
class __is_assignable_helper_af2<_Tp, _Up,
void_t<decltype(std::declval<_Tp&>() = std::declval<_Up&>())>>
: public std::true_type
{
};

为什么第一个模板需要默认类型 void ?int 不起作用。

据我了解,这两个函数将具有相同的签名(带有 void),但将使用更特殊的函数(第二个)。但为什么它不适用于 int ?第二个带有 void 的仍然是首选,不是吗?

=int 不会匹配 SFINAE 吗?

谢谢!

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