【发布时间】:2020-11-18 15:36:23
【问题描述】:
考虑如何使用decltype() 尾随返回类型中的逗号表达式来检查是否可以应用函数:
template <class A>
auto f(A a) -> decltype(check_if_possible(a), return_type(a))
如何否定逗号前的部分以排除定义check_if_possible(a) 的情况?
上下文:
f() 是不同A 的重载函数。我想解决两个实现之间的模棱两可的重载。其中一个使用check_if_possible(a),另一个在不能应用于a的情况下工作。
编辑:
也欢迎使用std::enable_if 和相关的东西,但我想避免额外的帮助函数/模板,因为有几个类似于f() 的函数具有不同的启用标准。
如果这是不可能的,那么这也是一个答案;)
【问题讨论】:
-
从C++20开始,可以使用
requires。
标签: c++ sfinae decltype trailing-return-type