Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/compilers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
xcode:
strategy:
matrix:
xcode_version: [ '16.4' ]
xcode_version: [ '26.6' ]
build_type: [ Debug, Release ]
cxx_version: [ 14, 17, 20, 23 ]
runs-on: macos-latest
Expand All @@ -88,9 +88,13 @@ jobs:
# Regular MSVC builds use Ninja (from preset)
- toolset: 'msvc'
generator_override: ''
# ClangCL builds require Visual Studio generator
- toolset: 'ClangCL'
# ClangCL builds require Visual Studio generator; version depends on image
- image: windows-2022
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
Expand Down
3 changes: 3 additions & 0 deletions include/gsl/assert
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
#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) &&
Expand Down
6 changes: 2 additions & 4 deletions include/gsl/dyn_array
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,8 @@ namespace details

constexpr auto operator++(int)
{
auto rv = *this;
++(*this);
return rv;
return dyn_array_iterator{_ptr, _pos - 1, _end_pos};
}

constexpr auto operator--() -> dyn_array_iterator&
Expand All @@ -230,9 +229,8 @@ namespace details

constexpr auto operator--(int)
{
auto rv = *this;
--(*this);
return rv;
return dyn_array_iterator{_ptr, _pos + 1, _end_pos};
}

constexpr auto operator+=(difference_type diff) -> dyn_array_iterator&
Expand Down
9 changes: 9 additions & 0 deletions include/gsl/util
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@ 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
{
Expand All @@ -157,6 +163,9 @@ 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>
Expand Down
10 changes: 9 additions & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ 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)
Expand Down Expand Up @@ -111,7 +119,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>:
Expand Down
7 changes: 7 additions & 0 deletions tests/dyn_array_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,10 @@ 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
{
Expand Down Expand Up @@ -218,6 +222,9 @@ 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,
Expand Down
Loading