146template<
typename TBoxable>
167 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
168 static constexpr
void Write(
Placeholder& box, const TBoxable& value ) { box.Write( value ); }
169 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
191 std::conditional_t<!std::is_abstract<TBoxable>::value, TBoxable, TBoxable&>
193DOX_MARKER([DOX_BOXING_T_BOXER_READ])
194return box.
Read<TBoxable>();
195DOX_MARKER([DOX_BOXING_T_BOXER_READ])
205template<
typename TBoxable>
206requires( std::is_array_v<TBoxable> || std::is_function<TBoxable>::value )
207struct BoxTraits<TBoxable>
209 using Mapping= DefaultBoxingTag;
210 static constexpr bool IsArray= std::is_array_v<TBoxable>;
212 static void Write( Placeholder& box, TBoxable& value );
213 static void Read (
const Placeholder& box);
218struct BoxTraits<void>
220 using Mapping= DefaultBoxingTag;
221 static constexpr bool IsArray=
false;
222 static void Write( Placeholder& box,
const void* value );
223 static void*
Read (
const Placeholder& box);
262template<
typename TMappedPlain>
285= ( std::is_pointer_v<T> || !std::same_as<DefaultBoxingTag, typename BoxTraits< T >::Mapping> )
298template<
typename T,
typename TVal= ALIB_TVALUE(T)>
299concept IsStdPH=
sizeof(std::conditional_t<std::same_as<void, TVal>,
void*, TVal>)
301 && std::is_copy_constructible <TVal>::value
302 && std::is_trivially_destructible<TVal>::value;
324template<
typename TCharArray>
359 !std::same_as<T, std::remove_reference_t<
decltype(
BoxTraits<T>::Read(std::declval<Placeholder>()))> >;
381 std::same_as<NotBoxableTag, typename BoxTraits<T>::Mapping>
383 && ( ( !std::is_pointer_v<T>
386 || ( std::is_pointer_v<T>
418 && bool( std::is_pointer_v<T> )
420 || !std::is_copy_constructible <
ALIB_TVALUE(T)>::value
421 || !std::is_trivially_destructible<
ALIB_TVALUE(T)>::value ) )
#define ALIB_POP_ALLOWANCE
#define ALIB_SIZEOF_LONGDOUBLE_WRITTEN
constexpr unsigned 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