Concepts¶
For all the standard concepts that are involved in the definition of std::regular we provide supplementary concepts that check whether all the required operations are trivial or nothrow. There are standard type traits for all these requirements, but they weren’t grouped into concepts.
These concepts are especially useful in unit tests.
Reference¶
Core language concepts¶
For std::convertible_to:
#include <actl/meta/concepts/core/ConvertibleTo.hpp>
-
template<typename Source, typename Target>
concept NothrowExplicitlyConvertibleTo¶ -
template<typename Source, typename Target>
concept NothrowConvertibleTo¶ -
template<typename Source, typename Target>
concept MayThrowConvertibleTo¶ For std::assignable_from:
#include <actl/meta/concepts/core/AssignableFrom.hpp>
-
template<typename Target, typename Source>
concept TriviallyAssignableFrom¶ -
template<typename Target, typename Source>
concept NothrowAssignableFrom¶ For std::swappable, std::swappable_with:
#include <actl/meta/concepts/core/Swappable.hpp>
-
template<typename T>
concept NothrowSwappable¶ -
template<typename L, typename R>
concept NothrowSwappableWith¶ #include <actl/meta/concepts/core/ConstructibleFrom.hpp>
-
template<typename T, typename ...Args>
concept TriviallyConstructibleFrom¶ -
template<typename T, typename ...Args>
concept NothrowConstructibleFrom¶ For std::default_initializable:
#include <actl/meta/concepts/core/DefaultInitializable.hpp>
-
template<typename T>
concept TriviallyDefaultInitializable¶ -
template<typename T>
concept NothrowDefaultInitializable¶ #include <actl/meta/concepts/core/MoveConstructible.hpp>
-
template<typename T>
concept TriviallyMoveConstructible¶ -
template<typename T>
concept NothrowMoveConstructible¶ #include <actl/meta/concepts/core/CopyConstructible.hpp>
-
template<typename T>
concept TriviallyCopyConstructible¶ -
template<typename T>
concept NothrowCopyConstructible¶ -
template<typename T>
concept MayThrowCopyConstructible¶ Comparison concepts¶
#include <actl/meta/concepts/comparison/EqualityComparable.hpp>
-
template<typename T>
concept NothrowEqualityComparable¶ Object concepts¶
For std::movable:
#include <actl/meta/concepts/object/Movable.hpp>
-
template<typename T>
concept TriviallyMovable¶ -
template<typename T>
concept NothrowMovable¶ For std::copyable:
#include <actl/meta/concepts/object/Copyable.hpp>
-
template<typename T>
concept TriviallyCopyable¶ -
template<typename T>
concept NothrowCopyable¶ -
template<typename T>
concept MayThrowCopyable¶ For std::semiregular:
#include <actl/meta/concepts/object/SemiRegular.hpp>
-
template<typename T>
concept TriviallySemiRegular¶ -
template<typename T>
concept NothrowSemiRegular¶ For std::regular:
#include <actl/meta/concepts/object/Regular.hpp>
-
template<typename T>
concept NothrowRegular¶
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T>
-
template<typename T, typename ...Args>
-
template<typename T, typename ...Args>
-
template<typename L, typename R>
-
template<typename T>
-
template<typename Target, typename Source>
-
template<typename Target, typename Source>
-
template<typename Source, typename Target>
-
template<typename Source, typename Target>