146template<
typename TBoxable>
168 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
169 static constexpr
void Write(
Placeholder& box, const TBoxable& value ) { box.Write( value ); }
170 DOX_MARKER([DOX_BOXING_T_BOXER_WRITE])
192 std::conditional_t<!std::is_abstract<TBoxable>::value, TBoxable, TBoxable&>
194DOX_MARKER([DOX_BOXING_T_BOXER_READ])
195return box.
Read<TBoxable>();
196DOX_MARKER([DOX_BOXING_T_BOXER_READ])
206template<
typename TBoxable>
207requires( std::is_array_v<TBoxable> || std::is_function<TBoxable>::value )
208struct BoxTraits<TBoxable>
210 using Mapping= DefaultBoxingTag;
211 static constexpr bool IsArray= std::is_array_v<TBoxable>;
213 static void Write( Placeholder& box, TBoxable& value );
214 static void Read (
const Placeholder& box);
219struct BoxTraits<void>
221 using Mapping= DefaultBoxingTag;
222 static constexpr bool IsArray=
false;
223 static void Write( Placeholder& box,
const void* value );
224 static void*
Read (
const Placeholder& box);
263template<
typename TMappedPlain>
286= ( std::is_pointer_v<T> || !std::same_as<DefaultBoxingTag, typename BoxTraits< T >::Mapping> )
299template<
typename T,
typename TVal= ALIB_TVALUE(T)>
300concept IsStdPH=
sizeof(std::conditional_t<std::same_as<void, TVal>,
void*, TVal>)
302 && std::is_copy_constructible <TVal>::value
303 && std::is_trivially_destructible<TVal>::value;
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_WARNINGS_RESTORE
#define ALIB_WARNINGS_IGNORE_DOCS
#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