Closed ZedThree closed 4 years ago
I am getting the same warning on GCC 9 that I don't fully understand the reasoning
/root/project/build/include/helics_cxx/helics/external/variant.hpp: In member function 'mpark::variant<Ts>& mpark::variant<Ts>::operator=(const mpark::variant<Ts>&) [with Ts = {double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint}]':
/root/project/build/include/helics_cxx/helics/external/variant.hpp:2181:9: warning: implicitly-declared 'mpark::detail::impl<double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint>& mpark::detail::impl<double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint>::operator=(const mpark::detail::impl<double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint>&)' is deprecated [-Wdeprecated-copy]
2181 | class variant {
| ^~~~~~~
/root/project/build/include/helics_cxx/helics/external/variant.hpp:2052:26: note: because 'mpark::detail::impl<double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint>' has user-provided 'mpark::detail::copy_assignment<mpark::detail::traits<Ts ...>, mpark::detail::Trait::Available>& mpark::detail::copy_assignment<mpark::detail::traits<Ts ...>, mpark::detail::Trait::Available>::operator=(const mpark::detail::copy_assignment<mpark::detail::traits<Ts ...>, mpark::detail::Trait::Available>&) [with Ts = {double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint}]'
2052 | copy_assignment &operator=(const copy_assignment &that) {
| ^~~~~~~~
/root/project/build/include/helics_cxx/helics/external/variant.hpp:2042:5: note: in definition of macro 'MPARK_VARIANT_COPY_ASSIGNMENT'
2042 | definition \
| ^~~~~~~~~~
/root/project/src/helics/apps/Player.cpp: In member function 'virtual void helics::apps::Player::loadJsonFile(const string&)':
/root/project/src/helics/apps/Player.cpp:566:36: note: synthesized method 'mpark::variant<Ts>& mpark::variant<Ts>::operator=(const mpark::variant<Ts>&) [with Ts = {double, long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::complex<double>, std::vector<double, std::allocator<double> >, std::vector<std::complex<double>, std::allocator<std::complex<double> > >, helics::NamedPoint}]' first required here
566 | points.back ().value = val;
points.back().value and val are both the same variant type.
How did you solve this error @ZedThree @phlptp ?
Removing the type noise, you get:
Which seems strange because
copy_assignment
has a copy constructor: