TypeTraits.h file
Macros CORRADE_
Contents
- Reference
Namespaces
- namespace Corrade
- Root namespace.
- namespace Corrade::Utility
- Utitlities.
Defines
- #define CORRADE_HAS_TYPE(className, typeExpression)
- Macro for creating traits class that checks for type expression validity.
Define documentation
#define CORRADE_HAS_TYPE(className, typeExpression)
Macro for creating traits class that checks for type expression validity.
| Parameters | |
|---|---|
| className | Resulting class name |
| typeExpression | Type expression to check |
Defines a traits class checking whether typeExpression is valid. You can use T to reference the type which is being checked. The defined class is then implicitly convertible to bool holding the result.
Usage examples: checking for presence of const_iterator member type:
CORRADE_HAS_TYPE(HasKeyType, typename T::key_type); static_assert(HasKeyType<std::map<int, int>>::value, ""); static_assert(!HasKeyType<std::vector<int>>::value, "");
Checking for presence of size() member function:
CORRADE_HAS_TYPE(HasSize, decltype(std::declval<T>().size())); static_assert(HasSize<std::vector<int>>::value, ""); static_assert(!HasSize<std::tuple<int, int>>::value, "");