Compare commits

..

1 Commits

Author SHA1 Message Date
Carson Radtke 0da5eff392 docs: fix false statements in gsl::dyn_array docs
https://github.com/microsoft/GSL/pull/1228 was merged with a handful of
unresolved comments. This PR resolves those comments.
2026-07-13 14:56:33 -06:00
7 changed files with 12 additions and 42 deletions
+3 -7
View File
@@ -61,7 +61,7 @@ jobs:
xcode:
strategy:
matrix:
xcode_version: [ '26.6' ]
xcode_version: [ '16.4' ]
build_type: [ Debug, Release ]
cxx_version: [ 14, 17, 20, 23 ]
runs-on: macos-latest
@@ -88,13 +88,9 @@ jobs:
# Regular MSVC builds use Ninja (from preset)
- toolset: 'msvc'
generator_override: ''
# ClangCL builds require Visual Studio generator; version depends on image
- image: windows-2022
toolset: 'ClangCL'
# ClangCL builds require Visual Studio generator
- toolset: 'ClangCL'
generator_override: '-G "Visual Studio 17 2022" -T ClangCL'
- image: windows-2025
toolset: 'ClangCL'
generator_override: '-G "Visual Studio 18 2026" -T ClangCL'
runs-on: ${{ matrix.image }}
steps:
- uses: actions/checkout@v6
+4 -5
View File
@@ -158,7 +158,7 @@ Convert the given value `I` to a `byte`. The template requires `I` to be in the
## <a name="H-dyn_array" />`<dyn_array>`
This header contains an owning dynamically allocated array type whose size is fixed between assignments.
This header contains an owning dynamically allocated array type whose size is fixed at construction.
- [`gsl::dyn_array`](#user-content-H-dyn_array-dyn_array)
@@ -170,7 +170,7 @@ class dyn_array;
```
`gsl::dyn_array` owns a contiguous sequence of `T` objects allocated with `Allocator`.
The number of elements is established when the object is constructed and remains unchanged until the object is copy-assigned.
The number of elements is established when the object is constructed and remains unchanged.
It provides bounds-checked element access and checked random-access iterators.
`gsl::dyn_array` is useful when the number of elements is known only at runtime, but the array should not grow or shrink through container operations.
@@ -242,8 +242,7 @@ constexpr dyn_array(dyn_array&&) = delete;
dyn_array& operator=(dyn_array&&) = delete;
```
Copy assignment replaces the contents with copies of the elements in `other`.
Move construction and move assignment are explicitly deleted.
Copy assignment, move assignment, and move construction are explicitly deleted.
##### Observers
@@ -300,7 +299,7 @@ constexpr auto crend() const;
Returns a reverse iterator to the first element of the reversed range or to one past the last element of the reversed range.
The iterators are random-access iterators and perform bounds checking.
The iterators are random-access iterators and perform bounds checking; they can never be invalidated.
Dereferencing `end()`, moving before `begin()` or past `end()`, or comparing iterators from different arrays violates preconditions.
##### Comparisons
-3
View File
@@ -31,9 +31,6 @@
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Winvalid-noreturn"
#if __clang_major__ >= 22
#pragma clang diagnostic ignored "-Wunique-object-duplication"
#endif // __clang_major >= 22
#endif // defined(__clang__)
#else // defined(_MSC_VER) && (defined(_KERNEL_MODE) || (defined(_HAS_EXCEPTIONS) &&
+4 -2
View File
@@ -216,8 +216,9 @@ namespace details
constexpr auto operator++(int)
{
auto rv = *this;
++(*this);
return dyn_array_iterator{_ptr, _pos - 1, _end_pos};
return rv;
}
constexpr auto operator--() -> dyn_array_iterator&
@@ -229,8 +230,9 @@ namespace details
constexpr auto operator--(int)
{
auto rv = *this;
--(*this);
return dyn_array_iterator{_ptr, _pos + 1, _end_pos};
return rv;
}
constexpr auto operator+=(difference_type diff) -> dyn_array_iterator&
-9
View File
@@ -133,12 +133,6 @@ namespace details
} // namespace details
// final_action allows you to ensure something gets run at the end of a scope
// The bool member causes trailing padding when F has alignment > 1; suppress
// -Wpadded since the padding is unavoidable for a generic callable wrapper.
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif // defined(__clang__)
template <class F>
class final_action
{
@@ -163,9 +157,6 @@ private:
F f;
bool invoke = true;
};
#if defined(__clang__)
#pragma clang diagnostic pop
#endif // defined(__clang__)
// finally() - convenience function to generate a final_action
template <class F>
+1 -9
View File
@@ -54,14 +54,6 @@ if (NOT GTestMain_FOUND)
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL
)
# googletest is built as its own target, so apply this workaround there.
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC"
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 22)
target_compile_options(gtest PRIVATE -Wno-character-conversion)
target_compile_options(gtest_main PRIVATE -Wno-character-conversion)
endif()
endif()
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
@@ -119,7 +111,7 @@ if(MSVC) # MSVC or simulating MSVC
-Wno-undef # GTest
-Wno-used-but-marked-unused # GTest EXPECT_DEATH
-Wno-switch-default # GTest EXPECT_DEATH
$<$<EQUAL:${GSL_CXX_STANDARD},14>: # no support for [[maybe_unused]]
$<$<EQUAL:${GSL_CXX_STANDARD},14>: # no support for [[maybe_unused]]
-Wno-unused-member-function
-Wno-unused-variable
$<$<VERSION_EQUAL:$<CXX_COMPILER_VERSION>,15.0.1>:
-7
View File
@@ -189,10 +189,6 @@ TEST(dyn_array_tests, ranges)
#endif /* __cpp_lib_ranges >= 201911L */
#if defined(__cpp_lib_constexpr_dynamic_alloc) && (__cpp_lib_constexpr_dynamic_alloc >= 201907L)
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif // defined(__clang__)
template <typename T, unsigned N>
struct ConstexprAllocator
{
@@ -222,9 +218,6 @@ struct ConstexprAllocator
constexpr void deallocate(value_type*, std::size_t) noexcept {}
};
#if defined(__clang__)
#pragma clang diagnostic pop
#endif // defined(__clang__)
template <typename T1, unsigned N1, typename T2, unsigned N2>
constexpr auto operator==(const ConstexprAllocator<T1, N1>& lhs,