146template<
typename TBoxable>
168 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
172 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
194 std::conditional_t<!std::is_abstract<TBoxable>::value, TBoxable, TBoxable&>
197DOX_MARKER([DOX_BOXING_T_BOXER_READ])
198return box.
Read<TBoxable>();
199DOX_MARKER([DOX_BOXING_T_BOXER_READ])
209template<
typename TBoxable>
210requires( std::is_array_v<TBoxable> || std::is_function<TBoxable>::value )
211struct BoxTraits<TBoxable>
213 using Mapping= DefaultBoxingTag;
214 static constexpr bool IsArray= std::is_array_v<TBoxable>;
216 static void Write( Placeholder& box, TBoxable& value );
217 static void Read (
const Placeholder& box);
222struct BoxTraits<void>
224 using Mapping= DefaultBoxingTag;
225 static constexpr bool IsArray=
false;
226 static void Write( Placeholder& box,
const void* value );
227 static void*
Read (
const Placeholder& box);
266template<
typename TMappedPlain>
267inline constexpr unsigned int SizeTraits=
sizeof(TMappedPlain);
289= ( std::is_pointer_v<T> || !std::same_as<DefaultBoxingTag, typename BoxTraits< T >::Mapping> )
302template<
typename T,
typename TVal= ALIB_TVALUE(T)>
303concept IsStdPH=
sizeof(std::conditional_t<std::same_as<void, TVal>,
void*, TVal>)
305 && std::is_copy_constructible <TVal>::value
306 && std::is_trivially_destructible<TVal>::value;
362 !std::same_as<T, std::remove_reference_t<
decltype(
BoxTraits<T>::Read(std::declval<Placeholder>()))> >;
384 std::same_as<NotBoxableTag, typename BoxTraits<T>::Mapping>
386 && ( ( !std::is_pointer_v<T>
389 || ( std::is_pointer_v<T>
421 && bool( std::is_pointer_v<T> )
423 || !std::is_copy_constructible <
ALIB_TVALUE(T)>::value
424 || !std::is_trivially_destructible<
ALIB_TVALUE(T)>::value ) )
#define ALIB_WARNINGS_RESTORE
#define ALIB_WARNINGS_IGNORE_DOCS
#define ALIB_SIZEOF_LONGDOUBLE_WRITTEN
constexpr unsigned int SizeTraits
characters::wchar wchar
Type alias in namespace alib.
characters::nchar nchar
Type alias in namespace alib.
characters::xchar xchar
Type alias in namespace alib.
static std::conditional_t<!std::is_abstract< TBoxable >::value, TBoxable, TBoxable & > Read(const Placeholder &box)
static constexpr void Write(Placeholder &box, const TBoxable &value)
static constexpr bool IsArray
Denotes whether type TBoxable is boxed as an array-type or not.
static constexpr Policy Construction