gcc 11 compilation fails
This is what happens on Ubuntu 18:
[ 67%] Building CXX object cpp/CMakeFiles/everybeam.dir/coords/itrfconverter.cc.o
In file included from /opt/EveryBeam/build/src/cpp/aterms/atermbase.cc:6:
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h: In member function 'void aocommon::FitsWriter::writeImage(fitsfile*, const string&, const double*, long int*) const':
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:692:29: error: 'numeric_limits' is not a member of 'std'
692 | double nullValue = std::numeric_limits<double>::max();
| ^~~~~~~~~~~~~~
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:692:44: error: expected primary-expression before 'double'
692 | double nullValue = std::numeric_limits<double>::max();
| ^~~~~~
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h: In member function 'void aocommon::FitsWriter::writeImage(fitsfile*, const string&, const float*, long int*) const':
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:700:28: error: 'numeric_limits' is not a member of 'std'
700 | float nullValue = std::numeric_limits<float>::max();
| ^~~~~~~~~~~~~~
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:700:43: error: expected primary-expression before 'float'
700 | float nullValue = std::numeric_limits<float>::max();
| ^~~~~
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h: In member function 'void aocommon::FitsWriter::writeImage(fitsfile*, const string&, const NumType*, long int*) const':
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:710:29: error: 'numeric_limits' is not a member of 'std'
710 | double nullValue = std::numeric_limits<double>::max();
| ^~~~~~~~~~~~~~
/opt/EveryBeam/build/src/external/aocommon/include/aocommon/fits/fitswriter.h:710:44: error: expected primary-expression before 'double'
710 | double nullValue = std::numeric_limits<double>::max();
| ^~~~~~
[ 69%] Building CXX object cpp/CMakeFiles/everybeam.dir/coords/itrfdirection.cc.o
[ 71%] Building CXX object cpp/CMakeFiles/everybeam.dir/msreadutils.cc.o
[ 72%] Building CXX object cpp/CMakeFiles/everybeam.dir/station.cc.o
cpp/CMakeFiles/everybeam.dir/build.make:224: recipe for target 'cpp/CMakeFiles/everybeam.dir/aterms/atermbase.cc.o' failed
make[2]: *** [cpp/CMakeFiles/everybeam.dir/aterms/atermbase.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc: In member function 'void everybeam::aterms::ATermConfig::Read(const casa::MeasurementSet&, const everybeam::aterms::ParsetProvider&, const string&)':
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc:47:26: warning: loop variable 'aterm_name' creates a copy from type 'const string' {aka 'const std::__cxx11::basic_string<char>'} [-Wrange-loop-construct]
47 | for (const std::string aterm_name : aterms) {
| ^~~~~~~~~~
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc:47:26: note: use reference type to prevent copying
47 | for (const std::string aterm_name : aterms) {
| ^~~~~~~~~~
| &
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc: In static member function 'static std::unique_ptr<everybeam::aterms::ATermBeam> everybeam::aterms::ATermConfig::GetATermBeam(const casa::MeasurementSet&, const everybeam::coords::CoordinateSystem&, const everybeam::ATermSettings&, bool, bool, bool, const string&)':
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc:279:19: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
279 | return std::move(beam);
| ~~~~~~~~~^~~~~~
/opt/EveryBeam/build/src/cpp/aterms/atermconfig.cc:279:19: note: remove 'std::move' call
CMakeFiles/Makefile2:463: recipe for target 'cpp/CMakeFiles/everybeam.dir/all' failed
The same is compiling fine with gcc 10.