|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator+ (U, V) -> Constexpr<(U::value+V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator- (U, V) -> Constexpr<(U::value - V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator& (U, V) -> Constexpr<(U::value &V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator* (U, V) -> Constexpr<(U::value *V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator/ (U, V) -> Constexpr<(U::value/V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator% (U, V) -> Constexpr< U::value % V::value > |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator<< (U, V) -> Constexpr<(U::value<< V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator>> (U, V) -> Constexpr<(U::value > > V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator| (U, V) -> Constexpr<(U::value|V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator^ (U, V) -> Constexpr<(U::value ^ V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator&& (U, V) -> Constexpr<(U::value &&V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator|| (U, V) -> Constexpr<(U::value||V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator== (U, V) -> Constexpr<(U::value==V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator!= (U, V) -> Constexpr<(U::value !=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator< (U, V) -> Constexpr<(U::value< V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator> (U, V) -> Constexpr<(U::value > V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator<= (U, V) -> Constexpr<(U::value<=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator>= (U, V) -> Constexpr<(U::value >=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator<=> (U, V) -> Constexpr<(U::value<=> V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator, (U, V) -> Constexpr<(U::value, V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator->* (U, V) -> Constexpr<(U::value-> *V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator+= (U, V) -> Constexpr<(U::value+=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator-= (U, V) -> Constexpr<(U::value -=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator*= (U, V) -> Constexpr<(U::value *=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator/= (U, V) -> Constexpr<(U::value/=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
constexpr friend auto | operator%= (U, V) -> Constexpr<(U::value %=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
auto | operator&= (U, V) -> Constexpr<(U::value &=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
auto | operator|= (U, V) -> Constexpr<(U::value|=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
auto | operator^= (U, V) -> Constexpr<(U::value ^=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
auto | operator<<= (U, V) -> Constexpr<(U::value<<=V::value)> |
|
template<detail::LhsConstexprParam< Type > U, detail::ConstexprParam V> |
auto | operator>>= (U, V) -> Constexpr<(U::value > >=V::value)> |
|
A wrapper for a constexpr value.
- Template Parameters
-
val | The value to wrap. |
T | The type of the value. |
This type defines a value which is lifted into the type-system, and so can be manipulated at compile time. This is especially useful for functions which take compile time values. This type is implicitly convertible to the wrapped value, and so can be used in place of it.
The helper alias meta::c_ is provided to make using this type more ergonomic, and since the type is able to be deduced, this works a lot better than something like std::integral_constant.
This type is taken from p2781.
- See also
- c_