.. _program_listing_file_include_ripple_utility_dim.hpp: Program Listing for File dim.hpp ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``include/ripple/utility/dim.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef RIPPLE_UTILITY_DIM_HPP #define RIPPLE_UTILITY_DIM_HPP #include "portability.hpp" namespace ripple { template struct Dimension { static constexpr size_t value = Value; ripple_all constexpr operator size_t() const { return static_cast(Value); } }; namespace detail { template struct IsDimension { static constexpr bool value = false; }; template struct IsDimension> { static constexpr bool value = true; }; } // namespace detail /*==--- [aliases] ----------------------------------------------------------==*/ using DimX = Dimension<0>; using DimY = Dimension<1>; using DimZ = Dimension<2>; /*==--- [constants] --------------------------------------------------------==*/ static constexpr inline DimX dimx() { return DimX{}; } static constexpr inline DimY dimy() { return DimY{}; } static constexpr inline DimZ dimz() { return DimZ{}; } template static constexpr size_t is_dimension_v = detail::IsDimension>::value; template using dim_type_from_dims_t = std:: conditional_t>; template using dim_enable_t = std::enable_if_t, int>; template using non_dim_enable_t = std::enable_if_t, int>; } // namespace ripple #endif // RIPPLE_UTILITY_DIM_HPP