ALib C++ Library
Library Version: 2510 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
alib::boxing::IsUnboxable Concept Reference

Description:

This concept is satisfied if a type can be unboxed and methods Box::IsType and Box::Unbox will not fail to compile with that type.

With default boxing, one of the types T and T* are unboxable (depending on value type size and whether the type is copy-constructible and trivially destructible).

If custom boxing for either or both of types T and T* is in place, then the given type is not unboxable if:

  • customization is not in place for the version passed (value or pointer).
  • customization is in place for the given type but concept IsLocked is satisfied.
  • The type is mapped to NotBoxableTag.
See also
Concepts IsCustomized, IsLocked and IsNotBoxable.
Template Parameters
TThe type to check.

Definition at line 417 of file boxingtraits.inl.

Concept definition

template<typename T>
&& bool( std::is_pointer_v<T> )
== bool( ( sizeof(Placeholder) < sizeof(ALIB_TVALUE(T)) )
|| !std::is_copy_constructible <ALIB_TVALUE(T)>::value
|| !std::is_trivially_destructible<ALIB_TVALUE(T)>::value ) )
||
&& !IsLocked <T>
||
#define ALIB_TVALUE(T)
Definition alib.inl:986