我一直在尝试找出lambda表达式的返回类型,以了解函数是否返回void
。
我的第一个想法是使用std::invoke_result
,但是由于它不适用于std::is_same
,因为后者期望两个类型,所以它没有像预期的那样工作。
以下是我尝试过的内容:
auto lamb = [] ( int x ) { cout << x << endl; };
is_same<(invoke_result<decltype(lamb),int>),void>;
错误是:
trabapply2.cc:32:50: error: template argument 1 is invalid
is_same<(invoke_result<decltype(lamb),int>),void>;
有任何建议吗?
invoke_result_t
用作invoke_result
只是类型特征类型。这将起作用:static_assert(std::is_same_v<(std::invoke_result_t<decltype(lamb),int>), void>);
。 - Joseph Thomson