Go to the source code of this file.
|
template<typename T > |
using | implementation_detail::is_valid_t = typename void_t< T >::type |
|
template<typename Base > |
using | add_name = implementation_detail::add_name< Base,!implementation_detail::has_name< Base >::value > |
|
template<typename Base > |
using | add_serviceLocator = implementation_detail::add_serviceLocator< Base,!implementation_detail::has_serviceLocator< Base >::value > |
|
#define generate_add_ |
( |
|
method, |
|
|
|
ret, |
|
|
|
args |
|
) |
| |
Value:template <typename Base, bool> struct add_ ## method; \
template <typename Base> \
struct add_ ## method <Base,false> : public Base { \
using Base::Base; \
}; \
template <typename Base> \
struct add_ ## method <Base, true> : public Base { \
using Base::Base; \
virtual ~add_ ## method () = default; \
virtual ret method
args const = 0; \
};
Definition at line 30 of file CommonMessaging.h.
#define generate_has_ |
( |
|
method, |
|
|
|
args |
|
) |
| |
Value:template <typename T, typename SFINAE = void> \
template <typename T> \
struct has_ ## method<T, is_valid_t<decltype(std::declval<const T&>().method
args)>> :
std::true_type {};
Templated class to add the standard messaging functionalities.
Definition at line 24 of file CommonMessaging.h.
template<typename Base >
using add_name = implementation_detail::add_name< Base, ! implementation_detail::has_name<Base>::value > |
template<typename Base >
using add_serviceLocator = implementation_detail::add_serviceLocator< Base, ! implementation_detail::has_serviceLocator<Base>::value > |