// Copyright (c) 2016-2021 Antony Polukhin // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PFR_OPS_HPP #define BOOST_PFR_OPS_HPP #pragma once #include #include #include /// \file boost/pfr/ops.hpp /// Contains comparison and hashing functions. /// If type is comparable using its own operator or its conversion operator, then the types operator is used. Otherwise /// the operation is done via corresponding function from boost/pfr/ops.hpp header. /// /// \b Example: /// \code /// #include /// struct comparable_struct { // No operators defined for that structure /// int i; short s; char data[7]; bool bl; int a,b,c,d,e,f; /// }; /// // ... /// /// comparable_struct s1 {0, 1, "Hello", false, 6,7,8,9,10,11}; /// comparable_struct s2 {0, 1, "Hello", false, 6,7,8,9,10,11111}; /// assert(boost::pfr::lt(s1, s2)); /// \endcode /// /// \podops for other ways to define operators and more details. /// /// \b Synopsis: namespace boost { namespace pfr { namespace detail { ///////////////////// Helper typedefs that are used by all the ops template