Metaprogramming, template variables and concepts.
Definition in file meta.hpp.
Go to the source code of this file.
#include <iosfwd>#include <iterator>#include <optional>#include <type_traits>#include <vector>#include <userver/utils/meta_light.hpp>
Include dependency graph for meta.hpp:
This graph shows which files directly or indirectly include this file:Typedefs | |
| template<typename T > | |
| using | meta::MapKeyType = DetectedType<impl::KeyType, T> |
| template<typename T > | |
| using | meta::MapValueType = DetectedType<impl::MappedType, T> |
| template<typename T > | |
| using | meta::RangeValueType = DetectedType<impl::RangeValueType, T> |
Functions | |
| template<typename T > | |
| auto | meta::Inserter (T &container) |
| Returns default inserter for a container. | |
Variables | |
| template<typename T > | |
| constexpr bool | meta::kIsVector = kIsInstantiationOf<std::vector, T> |
| template<typename T > | |
| constexpr bool | meta::kIsRange = kIsDetected<impl::IsRange, T> |
| template<typename T > | |
| constexpr bool | meta::kIsMap |
| Returns true if T is an ordered or unordered map or multimap. | |
| template<typename T > | |
| constexpr bool | meta::kIsUniqueMap |
| Returns true if T is a map (but not a multimap!) | |
| template<typename T > | |
| constexpr bool | meta::kIsRecursiveRange |
| template<typename T > | |
| constexpr bool | meta::kIsIterator = impl::IsIterator<T>::value |
| template<typename T > | |
| constexpr bool | meta::kIsOptional = kIsInstantiationOf<std::optional, T> |
| template<typename T > | |
| constexpr bool | meta::kIsOstreamWritable |
| template<typename T , typename U = T> | |
| constexpr bool | meta::kIsEqualityComparable |
| template<typename T > | |
| constexpr bool | meta::kIsStdHashable |
| template<typename T > | |
| constexpr bool | meta::kIsSizable = kIsDetected<impl::IsSizable, T> |
| Check if std::size is applicable to container. | |
| template<typename T > | |
| constexpr bool | meta::kIsReservable = kIsDetected<impl::ReserveResult, T> |
Check if a container has reserve | |
| template<typename T > | |
| constexpr bool | meta::kIsPushBackable = kIsDetected<impl::PushBackResult, T> |
| Check if a container has 'push_back'. | |
| template<typename T > | |
| constexpr bool | meta::kIsFixedSizeContainer |
| Check if a container has fixed size (e.g. std::array) | |
| using meta::MapKeyType = DetectedType<impl::KeyType, T> |
| using meta::MapValueType = DetectedType<impl::MappedType, T> |
| using meta::RangeValueType = DetectedType<impl::RangeValueType, T> |
| auto meta::Inserter | ( | T & | container | ) |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Returns true if T is an ordered or unordered map or multimap.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Returns true if T is a map (but not a multimap!)