[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