/// \file // Range v3 library // // Copyright Eric Niebler 2014-present // // Use, modification and distribution is subject to 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) // // Project home: https://github.com/ericniebler/range-v3 // #ifndef RANGES_V3_VIEW_EMPTY_HPP #define RANGES_V3_VIEW_EMPTY_HPP #include #include #include namespace ranges { /// \addtogroup group-views /// @{ template struct empty_view : view_interface, (cardinality)0> { static_assert(std::is_object::value, "The template parameter to empty_view must be an object type."); empty_view() = default; static constexpr T * begin() noexcept { return nullptr; } static constexpr T * end() noexcept { return nullptr; } static constexpr std::size_t size() noexcept { return 0u; } static constexpr T * data() noexcept { return nullptr; } RANGES_DEPRECATED( "Replace views::empty() with views::empty. " "It is now a variable template.") empty_view operator()() const { return *this; } }; template RANGES_INLINE_VAR constexpr bool enable_borrowed_range> = true; namespace views { template RANGES_INLINE_VAR constexpr empty_view empty{}; } namespace cpp20 { namespace views { using ranges::views::empty; } template(typename T)( requires std::is_object::value) // using empty_view = ranges::empty_view; } // namespace cpp20 /// @} } // namespace ranges #include #include RANGES_SATISFY_BOOST_RANGE(::ranges::empty_view) #endif