Skip to content

Build fails with -D_GLIBCXX_USE_CXX11_ABI=0: error: no matching function for call to 'std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, std::basic_string<char>::const_iterator)' #244

@barracuda156

Description

@barracuda156

There is a test for C++ ABI, and the flag is passed, however the code in archive.hpp does not compile with the old ABI:

make[2]: Entering directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'
cd /opt/local/var/macports/build/netgen-874f0f7c/work/build && /opt/local/bin/cmake -E cmake_depends "Unix Makefiles" /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604 /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core /opt/local/var/macports/build/netgen-874f0f7c/work/build /opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core /opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core/CMakeFiles/ngcore.dir/DependInfo.cmake "--color="
make[2]: Leaving directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'
/usr/bin/make  -f libsrc/core/CMakeFiles/ngcore.dir/build.make libsrc/core/CMakeFiles/ngcore.dir/build
make[2]: Entering directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'
[  0%] Building CXX object libsrc/core/CMakeFiles/ngcore.dir/archive.cpp.o
cd /opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core && /opt/local/bin/g++-mp-14 -DFFMPEG -DHAVE_DLFCN_H -DJPEGLIB -DNETGEN_PYTHON -DNGCORE_EXPORTS -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -D_GLIBCXX_USE_CXX11_ABI=0 -D__STDC_CONSTANT_MACROS -Dngcore_EXPORTS -I/opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core -I/opt/local/var/macports/build/netgen-874f0f7c/work/build -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/include -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/include -I/opt/local/include -I/opt/local/Library/Frameworks/Python.framework/Versions/3.14/include/python3.14 -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++17 -arch ppc -mmacosx-version-min=10.6 -fPIC -fvisibility=hidden -fabi-version=17 -MD -MT libsrc/core/CMakeFiles/ngcore.dir/archive.cpp.o -MF CMakeFiles/ngcore.dir/archive.cpp.o.d -o CMakeFiles/ngcore.dir/archive.cpp.o -c /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.cpp
[  1%] Linking CXX executable makerls
/opt/local/bin/cmake -E cmake_link_script CMakeFiles/makerls.dir/link.txt --verbose=ON
/opt/local/bin/g++-mp-14 -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -L/opt/local/lib -lMacportsLegacySupport -Wl,-rpath,/opt/local/lib/libgcc CMakeFiles/makerls.dir/rules/makerlsfile.cpp.o -o makerls  -Wl,-rpath,@loader_path -Wl,-rpath,@loader_path/../lib
make[2]: Leaving directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'
[  1%] Built target makerls
[  2%] Building CXX object libsrc/core/CMakeFiles/ngcore.dir/bitarray.cpp.o
cd /opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core && /opt/local/bin/g++-mp-14 -DFFMPEG -DHAVE_DLFCN_H -DJPEGLIB -DNETGEN_PYTHON -DNGCORE_EXPORTS -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -D_GLIBCXX_USE_CXX11_ABI=0 -D__STDC_CONSTANT_MACROS -Dngcore_EXPORTS -I/opt/local/var/macports/build/netgen-874f0f7c/work/build/libsrc/core -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core -I/opt/local/var/macports/build/netgen-874f0f7c/work/build -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/include -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc -I/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/include -I/opt/local/include -I/opt/local/Library/Frameworks/Python.framework/Versions/3.14/include/python3.14 -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++17 -arch ppc -mmacosx-version-min=10.6 -fPIC -fvisibility=hidden -fabi-version=17 -MD -MT libsrc/core/CMakeFiles/ngcore.dir/bitarray.cpp.o -MF CMakeFiles/ngcore.dir/bitarray.cpp.o.d -o CMakeFiles/ngcore.dir/bitarray.cpp.o -c /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/bitarray.cpp
In file included from /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.cpp:2:
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp: In member function 'virtual ngcore::Archive& ngcore::TextInArchive::operator&(std::string&)':
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp:1170:16: error: no matching function for call to 'std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, std::basic_string<char>::const_iterator)'
 1170 |       str.erase(std::remove(str.begin(), str.end(), '\r'), str.cend());
      |       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/local/include/gcc14/c++/bits/basic_string.h:57,
                 from /opt/local/include/gcc14/c++/string:54,
                 from /opt/local/include/gcc14/c++/bits/locale_classes.h:40,
                 from /opt/local/include/gcc14/c++/bits/ios_base.h:41,
                 from /opt/local/include/gcc14/c++/ios:44,
                 from /opt/local/include/gcc14/c++/istream:40,
                 from /opt/local/include/gcc14/c++/sstream:40,
                 from /opt/local/include/gcc14/c++/complex:45,
                 from /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp:7:
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::erase(size_type, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; size_type = long unsigned int]'
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:23: note:   no known conversion for argument 1 from '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' to 'std::basic_string<char>::size_type' {aka 'long unsigned int'}
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |             ~~~~~~~~~~^~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 1768 |       erase(iterator __position)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note:   candidate expects 1 argument, 2 provided
/opt/local/include/gcc14/c++/bits/cow_string.h:3406:6: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator, iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 3406 |      basic_string<_CharT, _Traits, _Alloc>::
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:3407:39: note:   no known conversion for argument 2 from '__normal_iterator<const char*,[...]>' to '__normal_iterator<char*,[...]>'
 3407 |      erase(iterator __first, iterator __last)
      |                              ~~~~~~~~~^~~~~~
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp:1178:18: error: no matching function for call to 'std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, std::basic_string<char>::const_iterator)'
 1178 |         str.erase(std::remove(str.begin()+old_size, str.end(), '\r'), str.cend());
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::erase(size_type, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; size_type = long unsigned int]'
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:23: note:   no known conversion for argument 1 from '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' to 'std::basic_string<char>::size_type' {aka 'long unsigned int'}
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |             ~~~~~~~~~~^~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 1768 |       erase(iterator __position)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note:   candidate expects 1 argument, 2 provided
/opt/local/include/gcc14/c++/bits/cow_string.h:3406:6: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator, iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 3406 |      basic_string<_CharT, _Traits, _Alloc>::
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:3407:39: note:   no known conversion for argument 2 from '__normal_iterator<const char*,[...]>' to '__normal_iterator<char*,[...]>'
 3407 |      erase(iterator __first, iterator __last)
      |                              ~~~~~~~~~^~~~~~
In file included from /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/bitarray.cpp:12:
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp: In member function 'virtual ngcore::Archive& ngcore::TextInArchive::operator&(std::string&)':
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp:1170:16: error: no matching function for call to 'std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, std::basic_string<char>::const_iterator)'
 1170 |       str.erase(std::remove(str.begin(), str.end(), '\r'), str.cend());
      |       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/local/include/gcc14/c++/bits/basic_string.h:57,
                 from /opt/local/include/gcc14/c++/string:54,
                 from /opt/local/include/gcc14/c++/bits/locale_classes.h:40,
                 from /opt/local/include/gcc14/c++/bits/ios_base.h:41,
                 from /opt/local/include/gcc14/c++/ios:44,
                 from /opt/local/include/gcc14/c++/ostream:40,
                 from /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/bitarray.hpp:12,
                 from /opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/bitarray.cpp:11:
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::erase(size_type, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; size_type = long unsigned int]'
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:23: note:   no known conversion for argument 1 from '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' to 'std::basic_string<char>::size_type' {aka 'long unsigned int'}
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |             ~~~~~~~~~~^~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 1768 |       erase(iterator __position)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note:   candidate expects 1 argument, 2 provided
/opt/local/include/gcc14/c++/bits/cow_string.h:3406:6: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator, iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 3406 |      basic_string<_CharT, _Traits, _Alloc>::
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:3407:39: note:   no known conversion for argument 2 from '__normal_iterator<const char*,[...]>' to '__normal_iterator<char*,[...]>'
 3407 |      erase(iterator __first, iterator __last)
      |                              ~~~~~~~~~^~~~~~
/opt/local/var/macports/build/netgen-874f0f7c/work/netgen-6.2.2604/libsrc/core/archive.hpp:1178:18: error: no matching function for call to 'std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, std::basic_string<char>::const_iterator)'
 1178 |         str.erase(std::remove(str.begin()+old_size, str.end(), '\r'), str.cend());
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::erase(size_type, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; size_type = long unsigned int]'
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1752:23: note:   no known conversion for argument 1 from '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' to 'std::basic_string<char>::size_type' {aka 'long unsigned int'}
 1752 |       erase(size_type __pos = 0, size_type __n = npos)
      |             ~~~~~~~~~~^~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 1768 |       erase(iterator __position)
      |       ^~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:1768:7: note:   candidate expects 1 argument, 2 provided
/opt/local/include/gcc14/c++/bits/cow_string.h:3406:6: note: candidate: 'std::basic_string<_CharT, _Traits, _Alloc>::iterator std::basic_string<_CharT, _Traits, _Alloc>::erase(iterator, iterator) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; iterator = std::basic_string<char>::iterator]'
 3406 |      basic_string<_CharT, _Traits, _Alloc>::
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/gcc14/c++/bits/cow_string.h:3407:39: note:   no known conversion for argument 2 from '__normal_iterator<const char*,[...]>' to '__normal_iterator<char*,[...]>'
 3407 |      erase(iterator __first, iterator __last)
      |                              ~~~~~~~~~^~~~~~
make[2]: *** [libsrc/core/CMakeFiles/ngcore.dir/bitarray.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [libsrc/core/CMakeFiles/ngcore.dir/archive.cpp.o] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'
make[1]: *** [libsrc/core/CMakeFiles/ngcore.dir/all] Error 2
make[1]: Leaving directory `/opt/local/var/macports/build/netgen-874f0f7c/work/build'

See also: https://trac.macports.org/ticket/73999

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions