27template <
typename T,
typename Enabled =
void>
32template <
typename T,
typename =
void>
36struct IsRegistered<T, std::void_t<decltype(TypeRegistry<T>{})>> : std::true_type {};
40 using ValueType =
typename std::remove_cv_t<T>;
43 "The provided template type is not registered. "
44 "Specify the data type manually or add a template specialization for TypeRegistry."
52#define UAPP_TYPEREGISTRY_NATIVE(NativeType, typeIndex) \
54 struct TypeRegistry<NativeType> { \
55 static const auto& getDataType() noexcept { \
56 return UA_TYPES[typeIndex]; \
90 static_assert(std::is_same_v<UA_String, UA_ByteString>);
91 static_assert(std::is_same_v<UA_String, UA_XmlElement>);
93 template <
typename... Ts>
96 detail::AlwaysFalse<Ts...>::value,
97 "Data type of UA_String is ambiguous (alias for UA_ByteString and UA_XmlElement). "
98 "Please specify data type manually."
static UA_LogCategory const char va_list args
const UA_DataType & getDataType() noexcept
#define UAPP_TYPEREGISTRY_NATIVE(NativeType, typeIndex)