#ifndef METAL_VALUE_SAME_HPP #define METAL_VALUE_SAME_HPP #include "../config.hpp" namespace metal { /// \cond namespace detail { template struct _same; } /// \endcond /// \ingroup value /// /// ### Description /// Checks whether all \values are identical. /// /// ### Usage /// For any \values `val_0, ..., val_n-1` /// \code /// using result = metal::same; /// \endcode /// /// \returns: \number /// \semantics: /// If at least two \values in `val_0, ..., val_n-1` are not identical /// to each other, then /// \code /// using result = metal::false_; /// \endcode /// otherwise /// \code /// using result = metal::true_; /// \endcode /// /// ### Example /// \snippet value.cpp same /// /// ### See Also /// \see distinct template using same = typename detail::_same::type; } #include "../number/number.hpp" #include "../value/value.hpp" namespace metal { /// \cond namespace detail { template struct _same_impl : false_ { }; template