gpt4 book ai didi

c++ - 如果自由函数不存在/不存在,SFINAE 从重载集中删除函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:40 27 4
gpt4 key购买 nike

如果特定的自由函数不存在,从重载集中删除模板函数的规范方法是什么。所以我有一个功能

template <typename T> void foo( T t )
{
// Do stuff
}

如果一个自由函数采用类型 T 的参数,我想从重载集中删除它,比如说

bar( T )

不存在。

另外,如果确实存在一个自由函数,如何从重载中移除一个函数呢?那么,如果函数 bar 确实存在,那么删除上面的函数 foo 吗?

最佳答案

像这样的简单表达式可以很容易地用 decltype 进行 SFINAE:

template <typename T>
auto foo( T t ) -> decltype(bar(t), void())
{
// Do stuff
}

关于c++ - 如果自由函数不存在/不存在,SFINAE 从重载集中删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634616/

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