小编Aar*_*ron的帖子

如何使用 sfinae 排除定义了函数的类型?

考虑如何使用decltype()尾随返回类型中的逗号表达式来检查是否可以应用函数:

template <class A>
auto f(A a) -> decltype(check_if_possible(a), return_type(a))
Run Code Online (Sandbox Code Playgroud)

如何否定逗号前的部分以排除check_if_possible(a)已定义的情况?

上下文: f()是不同的重载函数A。我想解决两个实现之间的歧义重载。其中一个使用check_if_possible(a),另一个在不能应用的情况下工作a

编辑:std::enable_if也欢迎使用和相关的东西,但我想避免额外的辅助功能/模板,因为有几个功能类似于f()具有不同启用条件的功能。如果这是不可能的,那么这也是一个答案;)

c++ decltype sfinae trailing-return-type

4
推荐指数
1
解决办法
85
查看次数

标签 统计

c++ ×1

decltype ×1

sfinae ×1

trailing-return-type ×1