diff options
-rw-r--r-- | include/gsl/span_ext | 28 | ||||
-rw-r--r-- | tests/span_ext_tests.cpp | 12 |
2 files changed, 40 insertions, 0 deletions
diff --git a/include/gsl/span_ext b/include/gsl/span_ext index 0f8c4c9..1d375fd 100644 --- a/include/gsl/span_ext +++ b/include/gsl/span_ext @@ -165,6 +165,34 @@ rend(const span<ElementType, Extent>& s) noexcept return s.rend();
}
+template <class ElementType, std::size_t Extent>
+constexpr typename span<ElementType, Extent>::iterator
+cbegin(const span<ElementType, Extent>& s) noexcept
+{
+ return s.begin();
+}
+
+template <class ElementType, std::size_t Extent = dynamic_extent>
+constexpr typename span<ElementType, Extent>::iterator
+cend(const span<ElementType, Extent>& s) noexcept
+{
+ return s.end();
+}
+
+template <class ElementType, std::size_t Extent>
+constexpr typename span<ElementType, Extent>::reverse_iterator
+crbegin(const span<ElementType, Extent>& s) noexcept
+{
+ return s.rbegin();
+}
+
+template <class ElementType, std::size_t Extent>
+constexpr typename span<ElementType, Extent>::reverse_iterator
+crend(const span<ElementType, Extent>& s) noexcept
+{
+ return s.rend();
+}
+
} // namespace gsl
#endif // GSL_SPAN_EXT_H
diff --git a/tests/span_ext_tests.cpp b/tests/span_ext_tests.cpp index 74aba3e..d413e03 100644 --- a/tests/span_ext_tests.cpp +++ b/tests/span_ext_tests.cpp @@ -208,14 +208,26 @@ TEST(span_ext_test, make_span_from_array_constructor) EXPECT_TRUE((std::is_same<decltype(s.begin()), decltype(begin(s))>::value));
EXPECT_TRUE((std::is_same<decltype(s.end()), decltype(end(s))>::value));
+ EXPECT_TRUE((std::is_same<decltype(std::cbegin(s)), decltype(cbegin(s))>::value));
+ EXPECT_TRUE((std::is_same<decltype(std::cend(s)), decltype(cend(s))>::value));
+
EXPECT_TRUE((std::is_same<decltype(s.rbegin()), decltype(rbegin(s))>::value));
EXPECT_TRUE((std::is_same<decltype(s.rend()), decltype(rend(s))>::value));
+ EXPECT_TRUE((std::is_same<decltype(std::crbegin(s)), decltype(crbegin(s))>::value));
+ EXPECT_TRUE((std::is_same<decltype(std::crend(s)), decltype(crend(s))>::value));
+
EXPECT_TRUE(s.begin() == begin(s));
EXPECT_TRUE(s.end() == end(s));
EXPECT_TRUE(s.rbegin() == rbegin(s));
EXPECT_TRUE(s.rend() == rend(s));
+
+ EXPECT_TRUE(s.begin() == cbegin(s));
+ EXPECT_TRUE(s.end() == cend(s));
+
+ EXPECT_TRUE(s.rbegin() == crbegin(s));
+ EXPECT_TRUE(s.rend() == crend(s));
}
TEST(span_ext_test, ssize_free_function)
|