Объяснить тестирование кода шаблона Если в классе есть переменная-член - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужна помощь в понимании некоторых шаблонов 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...