我需要找出一個給定類型是否具有函數X作爲具有給定參數列表的可調用函數。但是應該檢查而不是關心返回值。如何找出一個類型是否有任何返回類型的成員函數?
我發現this solution從another Stack Overflow question這似乎很好。它所做的是:
#include <type_traits>
template <typename C, typename F, typename = void>
struct is_call_possible : public std::false_type {};
template <typename C, typename R, typename... A>
struct is_call_possible<C, R(A...),
typename std::enable_if<
std::is_same<R, void>::value ||
std::is_convertible<decltype(
std::declval<C>().operator()(std::declval<A>()...)
), R>::value
>::type
> : public std::true_type {};
這正是我想要的,除了在檢查中還提供了所需的返回類型。我試圖找到一種方法來修改這個能夠檢查而不考慮返回類型,但我無法找出一種方法。
有誰知道如何做到這一點?
所以基本上要檢查是否該函數將 '迴歸''無效'或不? – Valerij