[3dprinter-general] Bug#1056897: FTBFS: Plater.cpp:5313: error: call of overloaded ‘load_files?=(<brace-enclosed initializer list>)=?UTF-8?Q?’ is ambiguous

Gregor Riepl onitake at gmail.com
Sun Nov 26 10:18:36 GMT 2023

Source: slic3r-prusa
Version: 2.6.1+dfsg-4
Severity: serious
Tags: ftbfs patch
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: onitake at gmail.com


During a recent upload, PrusaSlicer failed to build due to incompatible chanes in wxWidgets 3.2.

These changes include support for initializer lists, which clashes with some overloads in the
PrusaSlicer source code. The errors are as follows:

src/slic3r/GUI/Plater.cpp: In member function ‘void Slic3r::GUI::Plater::load_project(const wxString&)’:
src/slic3r/GUI/Plater.cpp:5313:21: error: call of overloaded ‘load_files(<brace-enclosed initializer list>)’ is ambiguous
 5313 |     if (! load_files({ into_path(filename) }).empty()) {
      |           ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/slic3r/GUI/Plater.cpp:20:
src/slic3r/GUI/Plater.hpp:193:25: note: candidate: ‘std::vector<long unsigned int> Slic3r::GUI::Plater::load_files(const std::vector<boost::filesystem::path>&, bool, bool, bool)’
  193 |     std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false);
      |                         ^~~~~~~~~~
src/slic3r/GUI/Plater.hpp:197:10: note: candidate: ‘bool Slic3r::GUI::Plater::load_files(const wxArrayString&, bool)’
  197 |     bool load_files(const wxArrayString& filenames, bool delete_after_load = false);
      |          ^~~~~~~~~~


src/slic3r/GUI/PhysicalPrinterDialog.cpp: In member function 'void Slic3r::GUI::PhysicalPrinterDialog::build_printhost_settings(Slic3r::GUI::ConfigOptionsGroup*)':
src/slic3r/GUI/PhysicalPrinterDialog.cpp:465:27: error: call of overloaded 'set_values(<brace-enclosed initializer list>)' is ambiguous
  465 |         choice->set_values({ m_config->opt_string("printhost_port") });
      |         ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/slic3r/GUI/ConfigManipulation.hpp:16,
                 from src/slic3r/GUI/Tab.hpp:50,
                 from src/slic3r/GUI/PhysicalPrinterDialog.cpp:28:
src/slic3r/GUI/Field.hpp:381:33: note: candidate: 'void Slic3r::GUI::Choice::set_values(const std::vector<std::__cxx11::basic_string<char> >&)'
  381 |         void                    set_values(const std::vector<std::string> &values);
      |                                 ^~~~~~~~~~
src/slic3r/GUI/Field.hpp:382:33: note: candidate: 'void Slic3r::GUI::Choice::set_values(const wxArrayString&)'
  382 |         void                    set_values(const wxArrayString &values);
      |                                 ^~~~~~~~~~

These issues can be worked around with an explicit instantiation of the std::vector.
A better solution would be a change to wxWidgets, by making the initializer list constructor explicit.

A patch will follow shortly.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-debug'), (500, 'proposed-updates-debug'), (300, 'unstable'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.5.0-4-amd64 (SMP w/24 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

More information about the 3dprinter-general mailing list