Fix CI builds (#8161)

* Update build.yml

Upgrade to gcc 13 and clang 15

* switch to __is_trivially_copyable

* fix cmake issue and warning about sign comparison

* Use libc++ for C++23 on clang for now

* Use libc++ for C++23 on clang for now

* exclude clang+15 for C++13 builds
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3db1f3d..b79fe18 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -25,7 +25,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        cxx: [g++-10, clang++-14]
+        cxx: [g++-13, clang++-15]
       fail-fast: false
     steps:
     - uses: actions/checkout@v3
@@ -58,11 +58,11 @@
       with:
         files: Linux.flatc.binary.${{ matrix.cxx }}.zip
     - name: Generate SLSA subjects - clang
-      if: matrix.cxx == 'clang++-14' && startsWith(github.ref, 'refs/tags/')
+      if: matrix.cxx == 'clang++-15' && startsWith(github.ref, 'refs/tags/')
       id: hash-clang
       run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT
     - name: Generate SLSA subjects - gcc
-      if: matrix.cxx == 'g++-10' && startsWith(github.ref, 'refs/tags/')
+      if: matrix.cxx == 'g++-13' && startsWith(github.ref, 'refs/tags/')
       id: hash-gcc
       run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT
 
@@ -72,7 +72,7 @@
     steps:
     - uses: actions/checkout@v3
     - name: cmake
-      run: CXX=clang++-14 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" .
+      run: CXX=clang++-15 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" .
     - name: build
       run: make -j
 
@@ -86,7 +86,7 @@
     - name: cmake
       working-directory: build
       run: >
-        CXX=clang++-14 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON
+        CXX=clang++-15 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON
         -DFLATBUFFERS_BUILD_CPP17=ON -DFLATBUFFERS_CPP_STD=17
     - name: build
       working-directory: build
@@ -105,11 +105,12 @@
       fail-fast: false
       matrix:
         std: [11, 14, 17, 20, 23]
-        cxx: [g++-10, clang++-14]
+        cxx: [g++-13, clang++-15]
         exclude:
-          # GCC 10.3.0 doesn't support std 23
-          - cxx: g++-10
-            std: 23
+          # Clang++15 10.3.0 stdlibc++ doesn't fully support std 23
+          - cxx: clang++-15
+            std: 23        
+
     steps:
     - uses: actions/checkout@v3
     - name: cmake
@@ -358,7 +359,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        cxx: [g++-10, clang++-14]
+        cxx: [g++-13, clang++-15]
     steps:
     - uses: actions/checkout@v3
     - name: cmake
@@ -389,7 +390,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        cxx: [g++-10]
+        cxx: [g++-13]
     steps:
     - uses: actions/checkout@v3
     - name: cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6a2e834..fd4418b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -556,7 +556,11 @@
 
   # Add a library so there is a single target that the generated samples can 
   # link too.
-  add_library(flatsample INTERFACE)
+  if(MSVC)
+    add_library(flatsample INTERFACE)
+  else()
+    add_library(flatsample STATIC)
+  endif()
 
   # Since flatsample has no sources, we have to explicitly set the linker lang.
   set_target_properties(flatsample PROPERTIES LINKER_LANGUAGE CXX)
diff --git a/include/flatbuffers/flexbuffers.h b/include/flatbuffers/flexbuffers.h
index 6651157..f262558 100644
--- a/include/flatbuffers/flexbuffers.h
+++ b/include/flatbuffers/flexbuffers.h
@@ -1720,7 +1720,7 @@
         max_vectors_(buf_len),
         check_alignment_(_check_alignment),
         reuse_tracker_(reuse_tracker) {
-    FLATBUFFERS_ASSERT(size_ < FLATBUFFERS_MAX_BUFFER_SIZE);
+    FLATBUFFERS_ASSERT(static_cast<int32_t>(size_) < FLATBUFFERS_MAX_BUFFER_SIZE);
     if (reuse_tracker_) {
       reuse_tracker_->clear();
       reuse_tracker_->resize(size_, PackedType(BIT_WIDTH_8, FBT_NULL));
diff --git a/tests/test.cpp b/tests/test.cpp
index be2811e..af8cd63 100644
--- a/tests/test.cpp
+++ b/tests/test.cpp
@@ -86,7 +86,7 @@
   // clang-format off
   #if __GNUG__ && __GNUC__ < 5 && \
       !(defined(__clang__) && __clang_major__ >= 16)
-    TEST_EQ(__has_trivial_copy(Vec3), true);
+    TEST_EQ(__is_trivially_copyable(Vec3), true);
   #else
     #if __cplusplus >= 201103L
       TEST_EQ(std::is_trivially_copyable<Vec3>::value, true);