[PATCH] Implement P0393R3
Jonathan Wakely
jwakely@redhat.com
Tue Jan 3 14:17:00 GMT 2017
On 01/01/17 04:17 -0800, Tim Shen via libstdc++ wrote:
>+#define _VARIANT_RELATION_FUNCTION_TEMPLATE(__op, __name) \
>+ template<typename... _Types> \
>+ constexpr bool operator __op(const variant<_Types...>& __lhs, \
>+ const variant<_Types...>& __rhs) \
>+ { \
>+ return __lhs._M##__name(__rhs, std::index_sequence_for<_Types...>{}); \
>+ } \
>+\
>+ constexpr bool operator __op(monostate, monostate) noexcept \
>+ { return 0 __op 0; }
>+
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(<, _erased_less_than)
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(<=, _erased_less_equal)
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(==, _erased_equal)
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(!=, _erased_not_equal)
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(>=, _erased_greater_than)
>+ _VARIANT_RELATION_FUNCTION_TEMPLATE(>, _erased_greater)
These need double underscore prefixes.
Still reviewing the rest ...
More information about the Libstdc++
mailing list