Мне нужна помощь в понимании некоторых шаблонов C ++ в raja.Этот код проверяет, является ли переменная членом структуры или, скорее, генерирует что-то, что проверяет, так ли это.У меня больше всего проблем с пониманием первой проверочной функции, которую она определяет.
У меня тоже так много вопросов по этому поводу, что я не знаю, с чего начать поиск в Google, чтобы решить эту проблему.
#define MEMBER_HAS(NAME) \
template <class T> \
class NAME \
{ \
template < \
typename U, \
typename = typename std::enable_if<!std::is_member_pointer<decltype( \
&U::NAME)>::value>::type> \
static std::true_type check(int); \
template <typename> \
static std::false_type check(...); \
\
public: \
static constexpr bool value = decltype(check<T>(0))::value; \
}
Этот код от RAJA и https://github.com/LLNL/RAJA/blob/fa891b149d374b37ec2ac27d00bc26f6a19f5e34/include/RAJA/policy/openacc/type_traits.hpp