office-gobmx/l10ntools
Stephan Bergmann 46875d8347 A better fix for C++23 P2266R1
After 6d6a143913 "Address some of the sprintf in
vcl/source/fontsubset/cff.cxx", --with-latest-c++ builds that pick up a C++23
compiler that implements
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2266r1.html> "P2266R1:
Simpler implicit move" started to fail with something like

> vcl/source/fontsubset/cff.cxx:2061:16: error: no viable conversion from returned value of type 'char[64]' to function return type 'OString'
>         return aDefaultGlyphName;
>                ^~~~~~~~~~~~~~~~~
[...]
> include/rtl/string.hxx:313:5: note: candidate constructor [with T = char[64]] not viable: expects an lvalue for 1st argument
>     OString( T& value, typename libreoffice_internal::NonConstCharArrayDetector< T, libreoffice_internal::Dummy >::Type = libreoffice_internal::Dummy() )
>     ^

etc.  So I figured there should be something better than
433ab39b21 "Adapt implicit OString return value
construction to C++23 P2266R1" (which this commit reverts, modulo its conflicts
in comphelper/source/xml/xmltools.cxx and
sc/source/filter/xcl97/XclExpChangeTrack.cxx) to address the underlying issue in
a way that keeps code that works up to C++20 also working in C++23.

(The fix is only relevant for non-explicit constructors that involve
NonConstCharArrayDetector and non-const lvalue references, not for other
functions involving those.  OUString has a similar constructor but which is
explicit, and OUStringBuffer doesn't have any similar constructors at all, so
this only affects OString and OStringBuffer constructors.)

Change-Id: I31cf16b9507899f5999243f8467dfa24bc94c5ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142455
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-11-08 17:28:32 +01:00
..
inc
source
Executable_cfgex.mk
Executable_helpex.mk
Executable_idxdict.mk
Executable_localize.mk
Executable_pocheck.mk
Executable_propex.mk
Executable_treex.mk
Executable_ulfex.mk
Executable_xrmex.mk
IwyuFilter_l10ntools.yaml
Makefile
Module_l10ntools.mk
README.md
StaticLibrary_transex.mk

Localization (l10n) Tools

l10ntools (l10n = localization) contains a number of tools that extract translatable content from source code and merge translations back to source code during the build.