#pragma once #include namespace ipc { // concept helpers template using require = std::enable_if_t; #ifdef IPC_CONCEPT_ # error "IPC_CONCEPT_ has been defined." #endif #define IPC_CONCEPT_(NAME, WHAT) \ template \ class NAME { \ private: \ template \ static std::true_type check(decltype(std::declval().WHAT)*); \ template \ static std::false_type check(...); \ public: \ using type = decltype(check(nullptr)); \ constexpr static auto value = type::value; \ } } // namespace ipc