Created attachment 53527 Header and source files needed to reproduce NB: googletest required to reproduce. Given the three minimal source files and the commands: ``` /usr/bin/g++-12 -I/usr/src/googletest/googlemock/include -O2 -std=c++20 -include cmake_pch.hxx -include cmake_pch.hxx -x c++-header -o cmake_pch.hxx.gch -c cmake_pch.hxx.cxx /usr/bin/g++-12 -I/usr/src/googletest/googlemock/include -O2 -std=c++20 -include cmake_pch.hxx -c tmp.cpp ``` gcc-12 errors out with the following: ``` In file included from /usr/include/c++/12/ios:40, from /usr/include/c++/12/ostream:38, from /usr/include/c++/12/bits/unique_ptr.h:41, from /usr/include/c++/12/memory:76, from /usr/src/googletest/googlemock/include/gmock/gmock-actions.h:139, from /usr/src/googletest/googlemock/include/gmock/gmock.h:56, from ./cmake_pch.hxx:5, from : In static member function ‘static constexpr std::char_traits::char_type* std::char_traits::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/12/bits/basic_string.h:675:23, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char _traits; _Alloc = allocator]’ at /usr/include/c++/12/bits/basic_string.h:3555:43, inlined from ‘testing::internal::TypedExpectation& testing::internal::MockSpec::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(bool)]’ at /usr/src/googletest/goog lemock/include/gmock/gmock-spec-builders.h:1278:23, inlined from ‘virtual void Test_tests_Test::TestBody()’ at tmp.cpp:20:5: /usr/include/c++/12/bits/char_traits.h:431:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ writing 19 bytes into a region of size 16 overflows the destination [-Wstringop-ove rflow=] 431 | return static_cast(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ In file included from /usr/src/googletest/googlemock/include/gmock/gmock-function-mocker.h:43, from /usr/src/googletest/googlemock/include/gmock/gmock.h:58: /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h: In member function ‘virtual void Test_tests_Test::TestBody()’: /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:1278:63: note: at offset 16 into destination object ‘’ of size 32 1278 | const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " + | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ In static member function ‘static constexpr std::char_traits::char_type* std::char_traits::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/12/bits/basic_string.h:675:23, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char _traits; _Alloc = allocator]’ at /usr/include/c++/12/bits/basic_string.h:3555:43, inlined from ‘testing::internal::TypedExpectation& testing::internal::MockSpec::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(bool)]’ at /usr/src/googletest/goog lemock/include/gmock/gmock-spec-builders.h:1278:23, inlined from ‘virtual void Test_tests_Test::TestBody()’ at tmp.cpp:20:5: /usr/include/c++/12/bits/char_traits.h:431:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ writing 21 bytes into a region of size 16 overflows the destination [-Wstringop-ove rflow=] 431 | return static_cast(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h: In member function ‘virtual void Test_tests_Test::TestBody()’: /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:1278:69: note: at offset 16 into destination object ‘’ of size 32 1278 | const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ In static member function ‘static constexpr std::char_traits::char_type* std::char_traits::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/12/bits/basic_string.h:675:23, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char _traits; _Alloc = allocator]’ at /usr/include/c++/12/bits/basic_string.h:3555:43, inlined from ‘testing::internal::TypedExpectation& testing::internal::MockSpec::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(bool)]’ at /usr/src/googletest/goog lemock/include/gmock/gmock-spec-builders.h:1278:23, inlined from ‘virtual void Test_tests_Test::TestBody()’ at tmp.cpp:20:5: /usr/include/c++/12/bits/char_traits.h:431:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ writing 39 bytes into a region of size 16 overflows the destination [-Wstringop-ove rflow=] 431 | return static_cast(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h: In member function ‘virtual void Test_tests_Test::TestBody()’: /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:1278:76: note: at offset 16 into destination object ‘’ of size 32 1278 | const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 1279 | call + ")"); | ~~~~ In static member function ‘static constexpr std::char_traits::char_type* std::char_traits::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/12/bits/basic_string.h:675:23, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char _traits; _Alloc = allocator]’ at /usr/include/c++/12/bits/basic_string.h:3555:43, inlined from ‘testing::internal::TypedExpectation& testing::internal::MockSpec::InternalExpectedAt(const char*, int, const char*, const char*) [with F = void(bool)]’ at /usr/src/googletest/goog lemock/include/gmock/gmock-spec-builders.h:1278:23, inlined from ‘virtual void Test_tests_Test::TestBody()’ at tmp.cpp:20:5: /usr/include/c++/12/bits/char_traits.h:431:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ writing 40 bytes into a region of size 16 overflows the destination [-Wstringop-ove rflow=] 431 | return static_cast(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h: In member function ‘virtual void Test_tests_Test::TestBody()’: /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:1278:23: note: at offset 16 into destination object ‘source_text’ of size 32 1278 | const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " + | ^~~~~~~~~~~ ``` gcc-11 continues to work.