include/rtl/strbuf.hxx      |    2 ++
 include/rtl/string.hxx      |    2 ++
 include/rtl/stringutils.hxx |    2 +-
 include/rtl/ustrbuf.hxx     |    2 ++
 4 files changed, 7 insertions(+), 1 deletion(-)

New commits:
commit 3c6de7e20e35e37cbddd2d35e065525616deac00
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Thu Oct 12 14:13:25 2023 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Oct 12 18:51:08 2023 +0200

    Fix build against VS 2022 17.7.5
    
    After af9c3ed6f748781f2a77e676ffe740992788969b "__cpp_char8_t is generally
    available now" (which Jenkins built successfully against some VS 2019 
version),
    various people using at least exactly VS 2022 17.7.5 
(--with-visual-studio=2022)
    started to experience issues like
    
    > include\rtl/stringutils.hxx(251): error C2065: 'char8_t': undeclared 
identifier
    
    when compiling e.g. cli_ure/source/climaker/climaker_app.cxx (i.e., in /clr
    mode).
    
    This is similar to the VS 2019 16.11.30 /clr issue discussed in the commit
    message of 5a40abc86b94c0be5b4a252c6ab5b0b0df6e520d "Drop some newly 
obsolete
    __cplusplus version checks", just that it apparently hits with a different 
set
    of VS versions.  The fix here is similar to the fix there, just 
conditionally
    disable char8_t functionality for certain VS versions in /clr mode, and keep
    fingers crossed.
    
    Change-Id: I8c4ed2e3d290dc1c94f329d314407a56170564f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157866
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/include/rtl/strbuf.hxx b/include/rtl/strbuf.hxx
index bb7f72e78cb5..dd4187e30fc3 100644
--- a/include/rtl/strbuf.hxx
+++ b/include/rtl/strbuf.hxx
@@ -122,7 +122,9 @@ public:
     explicit OStringBuffer(bool) = delete;
     explicit OStringBuffer(char) = delete;
     explicit OStringBuffer(wchar_t) = delete;
+#if !(defined _MSC_VER && _MSC_VER == 1937 && defined _MANAGED)
     explicit OStringBuffer(char8_t) = delete;
+#endif
     explicit OStringBuffer(char16_t) = delete;
     explicit OStringBuffer(char32_t) = delete;
 #endif
diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index a9038fc3cef0..566ff7ff4d2c 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -104,6 +104,7 @@ public:
         }
     }
 
+#if !(defined _MSC_VER && _MSC_VER == 1937 && defined _MANAGED)
 #if HAVE_CPP_CONSTEVAL
     consteval
 #else
@@ -117,6 +118,7 @@ public:
             more.buffer[i] = literal[i];
         }
     }
+#endif
 
     constexpr sal_Int32 getLength() const { return more.length; }
 
diff --git a/include/rtl/stringutils.hxx b/include/rtl/stringutils.hxx
index b8a978efbcc6..fa6c82f50d6f 100644
--- a/include/rtl/stringutils.hxx
+++ b/include/rtl/stringutils.hxx
@@ -246,7 +246,7 @@ struct ConstCharArrayDetector< const char[ 1 ], T >
 };
 #endif
 
-#if defined LIBO_INTERNAL_ONLY
+#if defined LIBO_INTERNAL_ONLY && !(defined _MSC_VER && _MSC_VER == 1937 && 
defined _MANAGED)
 template<std::size_t N, typename T>
 struct ConstCharArrayDetector<char8_t const [N], T> {
     using Type = T;
diff --git a/include/rtl/ustrbuf.hxx b/include/rtl/ustrbuf.hxx
index 41af86e13119..a96dac187455 100644
--- a/include/rtl/ustrbuf.hxx
+++ b/include/rtl/ustrbuf.hxx
@@ -124,7 +124,9 @@ public:
     explicit OUStringBuffer(bool) = delete;
     explicit OUStringBuffer(char) = delete;
     explicit OUStringBuffer(wchar_t) = delete;
+#if !(defined _MSC_VER && _MSC_VER == 1937 && defined _MANAGED)
     explicit OUStringBuffer(char8_t) = delete;
+#endif
     explicit OUStringBuffer(char16_t) = delete;
     explicit OUStringBuffer(char32_t) = delete;
 #endif

Reply via email to