vtkPDALReader fails to compile
Getting this building VTK 9.3.0.rc2 on Fedora rawhide with PDAL 2.6.0: ``` [ 54%] Building CXX object IO/PDAL/CMakeFiles/IOPDAL.dir/vtkPDALReader.cxx.o cd /builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/IO/PDAL && /usr/bin/g++ -DIOPDAL_EXPORTS -Dkiss_fft_scalar=double -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/IO/PDAL -I/builddir/build/BUILD/VTK-9.3.0.rc2/IO/PDAL -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/Core -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/Core -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/ExecutionModel -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/ExecutionModel -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/DataModel -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/DataModel -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/Math -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/Math -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/ThirdParty/kissfft/vtkkissfft -I/builddir/build/BUILD/VTK-9.3.0.rc2/ThirdParty/kissfft/vtkkissfft -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/Transforms -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/Transforms -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Filters/General -I/builddir/build/BUILD/VTK-9.3.0.rc2/Filters/General -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Common/Misc -I/builddir/build/BUILD/VTK-9.3.0.rc2/Common/Misc -I/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Filters/Core -I/builddir/build/BUILD/VTK-9.3.0.rc2/Filters/Core -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Utilities/KWIML -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/Utilities/KWIML -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/Utilities/KWSys -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/Utilities/KWSys -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial/ThirdParty/kissfft -isystem /builddir/build/BUILD/VTK-9.3.0.rc2/ThirdParty/kissfft -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -D_UNICODE -DHAVE_UINTPTR_T -g -std=c++11 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT IO/PDAL/CMakeFiles/IOPDAL.dir/vtkPDALReader.cxx.o -MF CMakeFiles/IOPDAL.dir/vtkPDALReader.cxx.o.d -o CMakeFiles/IOPDAL.dir/vtkPDALReader.cxx.o -c /builddir/build/BUILD/VTK-9.3.0.rc2/IO/PDAL/vtkPDALReader.cxx gmake[2]: Leaving directory '/builddir/build/BUILD/VTK-9.3.0.rc2/redhat-linux-build-serial' In file included from /usr/include/pdal/DimUtil.hpp:40, from /usr/include/pdal/Dimension.hpp:9, from /usr/include/pdal/Stage.hpp:39, from /usr/include/pdal/Reader.hpp:37, from /builddir/build/BUILD/VTK-9.3.0.rc2/IO/PDAL/vtkPDALReader.cxx:33: /usr/include/pdal/util/Utils.hpp:975:31: error: ‘std::enable_if_t’ has not been declared 975 | template<typename T, std::enable_if_t<!std::is_integral<T>::value>* = nullptr> | ^~~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:975:42: error: expected ‘>’ before ‘<’ token 975 | template<typename T, std::enable_if_t<!std::is_integral<T>::value>* = nullptr> | ^ /usr/include/pdal/util/Utils.hpp:994:31: error: ‘std::enable_if_t’ has not been declared 994 | template<typename T, std::enable_if_t<std::is_integral<T>::value>* = nullptr> | ^~~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:994:42: error: expected ‘>’ before ‘<’ token 994 | template<typename T, std::enable_if_t<std::is_integral<T>::value>* = nullptr> | ^ /usr/include/pdal/util/Utils.hpp:995:22: error: redefinition of ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 995 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ previously declared here 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:1012:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, std::string&)’ does not match any template declaration 1012 | inline StatusWithReason fromString(const std::string& from, std::string& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:1026:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, char&)’ does not match any template declaration 1026 | inline StatusWithReason fromString(const std::string& s, char& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:1057:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, unsigned char&)’ does not match any template declaration 1057 | inline StatusWithReason fromString(const std::string& s, unsigned char& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:1089:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, signed char&)’ does not match any template declaration 1089 | inline StatusWithReason fromString(const std::string& s, signed char& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:1120:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, double&)’ does not match any template declaration 1120 | inline StatusWithReason fromString(const std::string& s, double& d) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ In file included from /usr/include/pdal/Dimension.hpp:10: /usr/include/pdal/pdal_types.hpp: In member function ‘bool pdal::XForm::XFormComponent::set(const std::string&)’: /usr/include/pdal/pdal_types.hpp:156:48: error: no matching function for call to ‘fromString(const std::string&, double&)’ 156 | failed = !Utils::fromString(sval, m_val); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: candidate: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: template argument deduction/substitution failed: /usr/include/pdal/pdal_types.hpp:156:48: note: mismatched types ‘T*’ and ‘double’ 156 | failed = !Utils::fromString(sval, m_val); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidate: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: template argument deduction/substitution failed: /usr/include/pdal/pdal_types.hpp:156:48: note: couldn’t deduce template parameter ‘<anonymous>’ 156 | failed = !Utils::fromString(sval, m_val); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ In file included from /usr/include/pdal/Metadata.hpp:39, from /usr/include/pdal/Stage.hpp:42: /usr/include/pdal/util/Bounds.hpp: At global scope: /usr/include/pdal/util/Bounds.hpp:738:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, pdal::BOX2D&)’ does not match any template declaration 738 | inline StatusWithReason fromString(const std::string& s, BOX2D& bounds) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Bounds.hpp:755:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, pdal::BOX3D&)’ does not match any template declaration 755 | inline StatusWithReason fromString(const std::string& s, BOX3D& bounds) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Bounds.hpp:772:29: error: template-id ‘fromString<>’ for ‘pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, pdal::Bounds&)’ does not match any template declaration 772 | inline StatusWithReason fromString(const std::string& s, Bounds& bounds) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidates are: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/Metadata.hpp: In function ‘T pdal::MetadataDetail::value(const std::string&, const std::string&) [with T = bool; std::string = std::__cxx11::basic_string<char>]’: /usr/include/pdal/Metadata.hpp:398:27: error: no matching function for call to ‘fromString(const std::string&, bool&)’ 398 | if (!Utils::fromString(value, b)) | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: candidate: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: template argument deduction/substitution failed: /usr/include/pdal/Metadata.hpp:398:27: note: mismatched types ‘T*’ and ‘bool’ 398 | if (!Utils::fromString(value, b)) | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidate: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: template argument deduction/substitution failed: /usr/include/pdal/Metadata.hpp:398:27: note: couldn’t deduce template parameter ‘<anonymous>’ 398 | if (!Utils::fromString(value, b)) | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ In file included from /usr/include/pdal/Kernel.hpp:46, from /usr/include/pdal/PluginHelper.hpp:43, from /usr/include/pdal/Stage.hpp:45: /usr/include/pdal/util/ProgramArgs.hpp: In instantiation of ‘void pdal::TArg<T>::setValue(const std::string&) [with T = std::__cxx11::basic_string<char>; std::string = std::__cxx11::basic_string<char>]’: /usr/include/pdal/util/ProgramArgs.hpp:400:18: required from here /usr/include/pdal/util/ProgramArgs.hpp:414:40: error: no matching function for call to ‘fromString(const std::string&, std::__cxx11::basic_string<char>&)’ 414 | auto status = Utils::fromString(s, m_var); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: candidate: ‘template<class T> pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T*&)’ 953 | StatusWithReason fromString(const std::string& from, T* & to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:953:22: note: template argument deduction/substitution failed: /usr/include/pdal/util/ProgramArgs.hpp:414:40: note: mismatched types ‘T*’ and ‘std::__cxx11::basic_string<char>’ 414 | auto status = Utils::fromString(s, m_var); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: candidate: ‘template<class T, <typeprefixerror><anonymous> > pdal::Utils::StatusWithReason pdal::Utils::fromString(const std::string&, T&)’ 976 | StatusWithReason fromString(const std::string& from, T& to) | ^~~~~~~~~~ /usr/include/pdal/util/Utils.hpp:976:22: note: template argument deduction/substitution failed: /usr/include/pdal/util/ProgramArgs.hpp:414:40: note: couldn’t deduce template parameter ‘<anonymous>’ 414 | auto status = Utils::fromString(s, m_var); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ gmake[2]: *** [IO/PDAL/CMakeFiles/IOPDAL.dir/build.make:79: IO/PDAL/CMakeFiles/IOPDAL.dir/vtkPDALReader.cxx.o] Error 1 ```
issue