diff --git a/gsl/span b/gsl/span index 6f74dc5..cf90e86 100644 --- a/gsl/span +++ b/gsl/span @@ -503,6 +503,8 @@ public: Expects(idx >= 0 && idx < storage_.size()); return data()[idx]; } + + constexpr reference at(index_type idx) const { return this->operator[](idx); } constexpr reference operator()(index_type idx) const { return this->operator[](idx); } constexpr pointer data() const noexcept { return storage_.data(); } diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp index a1dd64d..35e6b03 100644 --- a/tests/span_tests.cpp +++ b/tests/span_tests.cpp @@ -769,6 +769,25 @@ SUITE(span_tests) } } + TEST(at_call) + { + int arr[4] = {1, 2, 3, 4}; + + { + span s = arr; + CHECK(s.at(0) == 1); + CHECK_THROW(s.at(5), fail_fast); + } + + { + int arr2d[2] = {1, 6}; + span s = arr2d; + CHECK(s.at(0) == 1); + CHECK(s.at(1) == 6); + CHECK_THROW(s.at(2) ,fail_fast); + } + } + TEST(operator_function_call) { int arr[4] = {1, 2, 3, 4};