【发布时间】:2021-10-21 11:16:54
【问题描述】:
我想要一个接受通用 lambda 的函数,但我需要根据 lambda 的返回类型略有不同的逻辑。例如,我想做如下的事情(这是一个人为的例子):
template<typename F>
void foo(F &&function) {
auto result = function();
// Have different behavior based on `result`'s type.
}
为了方便起见,我想我可以使用 SFINAE。在我看来,这看起来像:
template<typename F,
typename std::enable_if_t<???>>
void foo(F &&function) {
}
有人知道如何根据F 的返回类型启用/禁用方法吗?
【问题讨论】:
-
用
bar()调用bar(result)有一堆重载怎么样?喜欢gcc.godbolt.org/z/bWGqfGada -
@NathanOliver 这是相关的,但不是骗子。 OP 想知道如何根据返回类型做不同的事情,而不是如何实际获得该类型(当然这是必要的)。
标签: c++ templates lambda sfinae