मुझे यह पता लगाने की आवश्यकता है कि किसी दिए गए पैरामीटर सूची के साथ एक कॉल प्रकार को कॉल करने योग्य फ़ंक्शन के रूप में एक्स को फ़ंक्शन किया गया है या नहीं। चेक हालांकि वापसी मूल्य के बारे में परवाह करना चाहिए।कैसे पता लगाएं कि किसी प्रकार के पास किसी रिटर्न प्रकार के साथ सदस्य फ़ंक्शन है या नहीं?
मुझे 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