[Debian-med-packaging] Bug#1002203: mrtrix3: FTBFS: ./core/types.h:326:49: error: ‘using Vector3 = class Eigen::Matrix<double, 3, 1>’ redeclared as different kind of entity

Lucas Nussbaum lucas at debian.org
Tue Dec 21 16:03:19 GMT 2021


Source: mrtrix3
Version: 3.0.3-1
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20211220 ftbfs-bookworm

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version with openmp" -pthread -fPIC -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -mmmx -msse -msse2 -mfpmath=sse -DMRTRIX_WORD64 -DMRTRIX_HAVE_EIGEN_UNSUPPORTED_SPECIAL_FUNCTIONS -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DMRTRIX_PNG_SUPPORT -idirafter /usr/include/libpng16 -DEIGEN_FFTW_DEFAULT -fopenmp -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -idirafter /usr/include/eigen3 core/image_io/fetch_store.cpp -o tmp/core/image_io/fetch_store.o
> 
> failed with output
> 
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:326:49: error: ‘using Vector3 = class Eigen::Matrix<double, 3, 1>’ redeclared as different kind of entity
>   326 |   using Vector3 = Matrix<MR::default_type, 3, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: previous declaration ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:327:49: error: ‘using Vector4 = class Eigen::Matrix<double, 4, 1>’ redeclared as different kind of entity
>   327 |   using Vector4 = Matrix<MR::default_type, 4, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:542:1: note: previous declaration ‘template<class Type> using Vector4 = Eigen::Matrix<Type, 4, 1>’
>   542 | EIGEN_MAKE_TYPEDEFS(4, 4)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/exception.h:112:7: error: ‘vector’ does not name a type
>   112 |       vector<std::string> description;
>       |       ^~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const string&)’:
> ./core/exception.h:85:9: error: ‘description’ was not declared in this scope
>    85 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const MR::Exception&, const string&)’:
> ./core/exception.h:88:9: error: class ‘MR::Exception’ does not have any field named ‘description’
>    88 |         description (previous_exception.description) {
>       |         ^~~~~~~~~~~
> ./core/exception.h:88:41: error: ‘const class MR::Exception’ has no member named ‘description’
>    88 |         description (previous_exception.description) {
>       |                                         ^~~~~~~~~~~
> ./core/exception.h:89:9: error: ‘description’ was not declared in this scope
>    89 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘std::size_t MR::Exception::num() const’:
> ./core/exception.h:97:16: error: ‘description’ was not declared in this scope
>    97 |         return description.size();
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘const string& MR::Exception::operator[](std::size_t) const’:
> ./core/exception.h:100:16: error: ‘description’ was not declared in this scope
>   100 |         return description[n];
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const string&)’:
> ./core/exception.h:103:9: error: ‘description’ was not declared in this scope
>   103 |         description.push_back (s);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const MR::Exception&)’:
> ./core/exception.h:106:25: error: ‘const class MR::Exception’ has no member named ‘description’
>   106 |         for (auto s : e.description)
>       |                         ^~~~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:115:50: error: expected class-name before ‘{’ token
>   115 |   class InvalidImageException : public Exception { NOMEMALIGN
>       |                                                  ^
> ./core/exception.h:118:36: error: ‘Exception’ does not name a type
>   118 |       InvalidImageException (const Exception& previous_exception, const std::string& msg)
>       |                                    ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const string&)’:
> ./core/exception.h:117:56: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   117 |       InvalidImageException (const std::string& msg) : Exception(msg) {}
>       |                                                        ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const int&, const string&)’:
> ./core/exception.h:119:11: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   119 |         : Exception(previous_exception, msg) {}
>       |           ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:123:44: error: expected class-name before ‘{’ token
>   123 |   class CancelException : public Exception { NOMEMALIGN
>       |                                            ^
> ./core/exception.h: In constructor ‘MR::CancelException::CancelException()’:
> ./core/exception.h:125:28: error: class ‘MR::CancelException’ does not have any field named ‘Exception’
>   125 |       CancelException () : Exception ("operation cancelled by user") { }
>       |                            ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:128:41: error: ‘Exception’ does not name a type
>   128 |   void display_exception_cmdline (const Exception& E, int log_level);
>       |                                         ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::LogLevelLatch::LogLevelLatch(int)’:
> ./core/exception.h:137:23: error: ‘App’ has not been declared
>   137 |           prev_level (App::log_level)
>       |                       ^~~
> ./core/exception.h:139:9: error: ‘App’ has not been declared
>   139 |         App::log_level = new_level;
>       |         ^~~
> ./core/exception.h: In destructor ‘MR::LogLevelLatch::~LogLevelLatch()’:
> ./core/exception.h:142:9: error: ‘App’ has not been declared
>   142 |         App::log_level = prev_level;
>       |         ^~~
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:64:12: error: ‘max_digits’ is not a class template
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:64:91: error: redeclared with 1 template parameter
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |                                                                                           ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:12: error: ‘max_digits’ is not a class template
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:108: error: redeclared with 1 template parameter
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                            ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:74:12: error: ‘max_digits’ is not a class template
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h:74:163: error: redeclared with 1 template parameter
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                                                                                   ^
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h: In function ‘std::string Eigen::unquote(const string&)’:
> ./core/mrtrix.h:149:76: error: definition of ‘auto Eigen::unquote(const string&)::<lambda>::operator()(const char&) const’ is not in namespace enclosing ‘Eigen::unquote(const string&)::<lambda>’ [-fpermissive]
>   149 |     if (std::none_of (substring.begin(), substring.end(), [] (const char& c) { return c == '\"'; }))
>       |                                                                            ^
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:173:3: error: ‘vector’ does not name a type
>   173 |   vector<std::string> split (
>       |   ^~~~~~
> ./core/mrtrix.h:179:10: error: ‘vector’ does not name a type
>   179 |   inline vector<std::string> split_lines (
>       |          ^~~~~~
> ./core/mrtrix.h: In function ‘std::size_t Eigen::is_dash(const string&)’:
> ./core/mrtrix.h:227:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   227 |     size_t nbytes = char_is_dash (arg.c_str());
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘bool Eigen::consume_dash(const char*&)’:
> ./core/mrtrix.h:238:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   238 |     size_t nbytes = char_is_dash (arg);
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘std::string Eigen::str(const T&, int)’:
> ./core/mrtrix.h:252:14: error: ‘max_digits’ was not declared in this scope; did you mean ‘MR::max_digits’?
>   252 |     else if (max_digits<T>::value())
>       |              ^~~~~~~~~~
>       |              MR::max_digits
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h:59:12: note: ‘MR::max_digits’ declared here
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h:252:26: error: expected primary-expression before ‘>’ token
>   252 |     else if (max_digits<T>::value())
>       |                          ^
> ./core/mrtrix.h:252:29: error: ‘::value’ has not been declared
>   252 |     else if (max_digits<T>::value())
>       |                             ^~~~~
> ./core/mrtrix.h:253:37: error: expected primary-expression before ‘>’ token
>   253 |       stream.precision (max_digits<T>::value());
>       |                                     ^
> ./core/mrtrix.h:253:40: error: ‘::value’ has not been declared
>   253 |       stream.precision (max_digits<T>::value());
>       |                                        ^~~~~
> ./core/mrtrix.h:256:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   256 |       throw Exception (std::string("error converting type \"") + typeid(T).name() + "\" value to string");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:256:13: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
> ./core/mrtrix.h: In function ‘T Eigen::to(const string&)’:
> ./core/mrtrix.h:262:33: error: there are no arguments to ‘strip’ that depend on a template parameter, so a declaration of ‘strip’ must be available [-fpermissive]
>   262 |     const std::string stripped (strip (string));
>       |                                 ^~~~~
> ./core/mrtrix.h:268:37: error: there are no arguments to ‘lowercase’ that depend on a template parameter, so a declaration of ‘lowercase’ must be available [-fpermissive]
>   268 |         const std::string lstring = lowercase (stripped);
>       |                                     ^~~~~~~~~
> ./core/mrtrix.h:278:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   278 |       throw Exception ("error converting string \"" + string + "\" to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:280:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   280 |       throw Exception ("incomplete use of string \"" + string + "\" in conversion to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:285:29: error: expected initializer before ‘<’ token
>   285 |   template <> inline bool to<bool> (const std::string& string)
>       |                             ^
> ./core/mrtrix.h:295:37: error: expected initializer before ‘<’ token
>   295 |   template <> inline std::string str<cfloat> (const cfloat& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:308:22: error: ‘cfloat’ does not name a type
>   308 |   template <> inline cfloat to<cfloat> (const std::string& string)
>       |                      ^~~~~~
> ./core/mrtrix.h:353:37: error: expected initializer before ‘<’ token
>   353 |   template <> inline std::string str<cdouble> (const cdouble& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:366:22: error: ‘cdouble’ does not name a type
>   366 |   template <> inline cdouble to<cdouble> (const std::string& string)
>       |                      ^~~~~~~
> ./core/mrtrix.h:417:3: error: ‘vector’ does not name a type
>   417 |   vector<default_type> parse_floats (const std::string& spec);
>       |   ^~~~~~
> ./core/mrtrix.h:422:3: error: ‘vector’ does not name a type
>   422 |   vector<IntType> parse_ints (const std::string& spec, const IntType last = std::numeric_limits<IntType>::max())
>       |   ^~~~~~
> ./core/mrtrix.h:498:34: error: ‘vector’ does not name a type
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:498:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:501:9: error: ‘V’ was not declared in this scope
>   501 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:503:11: error: ‘V’ was not declared in this scope
>   503 |     ret = V[0];
>       |           ^
> ./core/mrtrix.h:504:10: error: ‘vector’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |          ^~~~~~
> ./core/mrtrix.h:504:10: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/mrtrix.h:504:28: error: expected primary-expression before ‘>’ token
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                            ^
> ./core/mrtrix.h:504:31: error: ‘::const_iterator’ has not been declared
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                               ^~~~~~~~~~~~~~
> ./core/mrtrix.h:504:64: error: ‘i’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                                ^
> ./core/mrtrix.h:505:14: error: ‘delimiter’ was not declared in this scope
>   505 |       ret += delimiter + *i;
>       |              ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:510:34: error: ‘vector’ does not name a type
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:510:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:513:9: error: ‘V’ was not declared in this scope
>   513 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:515:15: error: ‘V’ was not declared in this scope
>   515 |     ret = str(V[0]);
>       |               ^
> ./core/mrtrix.h:515:11: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   515 |     ret = str(V[0]);
>       |           ^~~
> ./core/mrtrix.h:516:25: error: expected ‘;’ before ‘<’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                         ^
>       |                         ;
> ./core/mrtrix.h:516:25: error: expected primary-expression before ‘<’ token
> ./core/mrtrix.h:516:27: error: expected primary-expression before ‘>’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                           ^
> ./core/mrtrix.h:516:30: error: ‘::const_iterator’ has not been declared
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                              ^~~~~~~~~~~~~~
> ./core/mrtrix.h:516:44: error: expected ‘;’ before ‘i’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                            ^~
>       |                                            ;
> ./core/mrtrix.h:516:45: error: ‘i’ was not declared in this scope
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                             ^
> ./core/mrtrix.h:516:61: error: expected ‘)’ before ‘;’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |         ~                                                   ^
>       |                                                             )
> ./core/mrtrix.h:516:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |     ^~~
> ./core/mrtrix.h:516:63: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                               ^
> ./core/mrtrix.h:516:63: error: ‘i’ was not declared in this scope
> In file included from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/raw.h: At global scope:
> ./core/raw.h:88:38: error: ‘is_complex’ was not declared in this scope; did you mean ‘MR::is_complex’?
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                      ^~~~~~~~~~
>       |                                      MR::is_complex
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:242:37: note: ‘MR::is_complex’ declared here
>   242 |   template <class ValueType> struct is_complex : std::false_type { NOMEMALIGN };
>       |                                     ^~~~~~~~~~
> In file included from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/raw.h:88:58: error: template argument 1 is invalid
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                          ^
> ./core/raw.h:88:59: error: expected identifier before ‘::’ token
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                           ^~
> ./core/raw.h:88:61: error: declaration of ‘value’ not in a namespace surrounding ‘::’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                             ^~~~~
> ./core/raw.h:88:61: error: ‘value’ should have been declared inside ‘::’
> ./core/raw.h:88:7: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |       ^~~~~~
> ./core/raw.h:88:59: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                           ^~
> ./core/raw.h:88:66: error: expected ‘;’ before ‘,’ token
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                                  ^
>       |                                                                  ;
> ./core/raw.h: In function ‘ValueType Eigen::fetch_LE(const void*)’:
> ./core/raw.h:111:64: error: ‘ByteOrder’ has not been declared
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                ^~~~~~~~~
> ./core/raw.h:111:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:111:92: error: expected primary-expression before ‘>’ token
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                                            ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_BE(const void*)’:
> ./core/raw.h:114:64: error: ‘ByteOrder’ has not been declared
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                ^~~~~~~~~
> ./core/raw.h:114:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:114:92: error: expected primary-expression before ‘>’ token
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                                            ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_(const void*, bool)’:
> ./core/raw.h:117:105: error: ‘ByteOrder’ has not been declared
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                         ^~~~~~~~~
> ./core/raw.h:117:123: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                                           ^~
>       |                                                                                                                           Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:117:135: error: expected primary-expression before ‘>’ token
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                                                       ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch__native(const void*)’:
> ./core/raw.h:120:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   120 |       inline ValueType fetch__native (const void* address) { return *as<ValueType>(address); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:120:82: error: expected primary-expression before ‘>’ token
>   120 |       inline ValueType fetch__native (const void* address) { return *as<ValueType>(address); }
>       |                                                                                  ^
> ./core/raw.h: In function ‘void Eigen::store_LE(ValueType, void*)’:
> ./core/raw.h:124:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:124:82: error: expected primary-expression before ‘>’ token
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                                  ^
> ./core/raw.h:124:95: error: ‘ByteOrder’ has not been declared
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                                               ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_BE(ValueType, void*)’:
> ./core/raw.h:127:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:127:82: error: expected primary-expression before ‘>’ token
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                                  ^
> ./core/raw.h:127:95: error: ‘ByteOrder’ has not been declared
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                                               ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store(ValueType, void*, bool)’:
> ./core/raw.h:130:110: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                              ^~
>       |                                                                                                              Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:130:122: error: expected primary-expression before ‘>’ token
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                          ^
> ./core/raw.h:130:135: error: ‘ByteOrder’ has not been declared
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                       ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_native(ValueType, void*)’:
> ./core/raw.h:133:74: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   133 |       inline void store_native (const ValueType value, void* address) { *as<ValueType>(address) = value; }
>       |                                                                          ^~
>       |                                                                          Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:133:86: error: expected primary-expression before ‘>’ token
>   133 |       inline void store_native (const ValueType value, void* address) { *as<ValueType>(address) = value; }
>       |                                                                                      ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_LE(const void*, std::size_t)’:
> ./core/raw.h:139:71: error: ‘ByteOrder’ has not been declared
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                       ^~~~~~~~~
> ./core/raw.h:139:86: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                      ^~
>       |                                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:139:98: error: expected primary-expression before ‘>’ token
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                                  ^
> ./core/raw.h:139:107: error: ‘const void*’ is not a pointer-to-object type
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                                           ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_BE(const void*, std::size_t)’:
> ./core/raw.h:143:71: error: ‘ByteOrder’ has not been declared
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                       ^~~~~~~~~
> ./core/raw.h:143:86: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                      ^~
>       |                                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:143:98: error: expected primary-expression before ‘>’ token
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                                  ^
> ./core/raw.h:143:107: error: ‘const void*’ is not a pointer-to-object type
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                                           ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch(const void*, std::size_t, bool)’:
> ./core/raw.h:147:111: error: ‘ByteOrder’ has not been declared
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                               ^~~~~~~~~
> ./core/raw.h:147:128: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                ^~
>       |                                                                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:147:140: error: expected primary-expression before ‘>’ token
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                            ^
> ./core/raw.h:147:149: error: ‘const void*’ is not a pointer-to-object type
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                                     ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_native(const void*, std::size_t)’:
> ./core/raw.h:151:75: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                           ^~
>       |                                                                           Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:151:87: error: expected primary-expression before ‘>’ token
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                                       ^
> ./core/raw.h:151:96: error: ‘const void*’ is not a pointer-to-object type
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                                                ^
> ./core/raw.h: In function ‘void Eigen::store_LE(ValueType, void*, std::size_t)’:
> ./core/raw.h:157:76: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                            ^~
>       |                                                                            Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:157:88: error: expected primary-expression before ‘>’ token
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                        ^
> ./core/raw.h:157:97: error: ‘void*’ is not a pointer-to-object type
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                                 ^
> ./core/raw.h:157:101: error: ‘ByteOrder’ has not been declared
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                                     ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_BE(ValueType, void*, std::size_t)’:
> ./core/raw.h:161:76: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                            ^~
>       |                                                                            Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:161:88: error: expected primary-expression before ‘>’ token
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                        ^
> ./core/raw.h:161:97: error: ‘void*’ is not a pointer-to-object type
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                                 ^
> ./core/raw.h:161:101: error: ‘ByteOrder’ has not been declared
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                                     ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store(ValueType, void*, std::size_t, bool)’:
> ./core/raw.h:165:116: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                    ^~
>       |                                                                                                                    Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:165:128: error: expected primary-expression before ‘>’ token
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                ^
> ./core/raw.h:165:137: error: ‘void*’ is not a pointer-to-object type
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                         ^
> ./core/raw.h:165:141: error: ‘ByteOrder’ has not been declared
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                             ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_native(ValueType, void*, std::size_t)’:
> ./core/raw.h:169:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:169:92: error: expected primary-expression before ‘>’ token
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                            ^
> ./core/raw.h:169:101: error: ‘void*’ is not a pointer-to-object type
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                                     ^
> ./core/raw.h: At global scope:
> ./core/raw.h:176:31: error: expected initializer before ‘<’ token
>   176 |       inline bool fetch_native<bool> (const void* data, size_t i) { return ( as<uint8_t>(data)[i/8]) & (BITMASK >> i%8 ); }
>       |                               ^
> ./core/raw.h:179:31: error: expected initializer before ‘<’ token
>   179 |       inline void store_native<bool> (const bool value, void* data, size_t i) {
>       |                               ^
> ./core/raw.h:193:24: error: expected initializer before ‘<’ token
>   193 |       inline bool fetch<bool> (const void* data, size_t i, bool) { return fetch_native<bool> (data, i); }
>       |                        ^
> ./core/raw.h:196:24: error: expected initializer before ‘<’ token
>   196 |       inline void store<bool> (const bool value, void* data, size_t i, bool) { store_native<bool> (value, data, i); }
>       |                        ^
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:65:15: error: ‘ArgFlags’ does not name a type
>    65 |     constexpr ArgFlags None = 0;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:66:15: error: ‘ArgFlags’ does not name a type
>    66 |     constexpr ArgFlags Optional = 0x1;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:67:15: error: ‘ArgFlags’ does not name a type
>    67 |     constexpr ArgFlags AllowMultiple = 0x2;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:122:9: error: ‘ArgType’ does not name a type
>   122 |         ArgType  type;
>       |         ^~~~~~~
> ./core/cmdline_option.h:124:9: error: ‘ArgFlags’ does not name a type
>   124 |         ArgFlags flags;
>       |         ^~~~~~~~
> ./core/cmdline_option.h:133:13: error: ‘default_type’ does not name a type
>   133 |             default_type min, max;
>       |             ^~~~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:206:37: error: ‘default_type’ does not name a type
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:207:37: error: ‘default_type’ does not name a type
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:206:77: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                             ^~~~~~~~~~~~
>       |                                                                             MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:206:89: error: template argument 1 is invalid
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                                         ^
> ./core/cmdline_option.h:207:76: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                            ^~~~~~~~~~~~
>       |                                                                            MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:207:88: error: template argument 1 is invalid
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                                        ^
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In constructor ‘MR::App::Argument::Argument(const char*, std::string)’:
> ./core/cmdline_option.h:112:42: error: class ‘MR::App::Argument’ does not have any field named ‘type’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                          ^~~~
> ./core/cmdline_option.h:112:48: error: ‘Undefined’ was not declared in this scope; did you mean ‘MR::App::Undefined’?
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                ^~~~~~~~~
>       |                                                MR::App::Undefined
> ./core/cmdline_option.h:45:7: note: ‘MR::App::Undefined’ declared here
>    45 |       Undefined,
>       |       ^~~~~~~~~
> ./core/cmdline_option.h:112:60: error: class ‘MR::App::Argument’ does not have any field named ‘flags’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                            ^~~~~
> ./core/cmdline_option.h:112:67: error: ‘None’ was not declared in this scope
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                                   ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::optional()’:
> ./core/cmdline_option.h:154:11: error: ‘flags’ was not declared in this scope
>   154 |           flags |= Optional;
>       |           ^~~~~
> ./core/cmdline_option.h:154:20: error: ‘Optional’ was not declared in this scope; did you mean ‘optional’?
>   154 |           flags |= Optional;
>       |                    ^~~~~~~~
>       |                    optional
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::allow_multiple()’:
> ./core/cmdline_option.h:161:11: error: ‘flags’ was not declared in this scope
>   161 |           flags |= AllowMultiple;
>       |           ^~~~~
> ./core/cmdline_option.h:161:20: error: ‘AllowMultiple’ was not declared in this scope; did you mean ‘allow_multiple’?
>   161 |           flags |= AllowMultiple;
>       |                    ^~~~~~~~~~~~~
>       |                    allow_multiple
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_text()’:
> ./core/cmdline_option.h:168:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   168 |           type = Text;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:168:18: error: ‘Text’ was not declared in this scope; did you mean ‘MR::App::Text’?
>   168 |           type = Text;
>       |                  ^~~~
>       |                  MR::App::Text
> ./core/cmdline_option.h:46:7: note: ‘MR::App::Text’ declared here
>    46 |       Text,
>       |       ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_in()’:
> ./core/cmdline_option.h:175:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   175 |           type = ImageIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:175:18: error: ‘ImageIn’ was not declared in this scope; did you mean ‘MR::App::ImageIn’?
>   175 |           type = ImageIn;
>       |                  ^~~~~~~
>       |                  MR::App::ImageIn
> ./core/cmdline_option.h:55:7: note: ‘MR::App::ImageIn’ declared here
>    55 |       ImageIn,
>       |       ^~~~~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_out()’:
> ./core/cmdline_option.h:182:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   182 |           type = ImageOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:182:18: error: ‘ImageOut’ was not declared in this scope; did you mean ‘MR::App::ImageOut’?
>   182 |           type = ImageOut;
>       |                  ^~~~~~~~
>       |                  MR::App::ImageOut
> ./core/cmdline_option.h:56:7: note: ‘MR::App::ImageOut’ declared here
>    56 |       ImageOut,
>       |       ^~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_integer(int64_t, int64_t)’:
> ./core/cmdline_option.h:190:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   190 |           type = Integer;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:190:18: error: ‘Integer’ was not declared in this scope; did you mean ‘MR::App::Integer’?
>   190 |           type = Integer;
>       |                  ^~~~~~~
>       |                  MR::App::Integer
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:48:7: note: ‘MR::App::Integer’ declared here
>    48 |       Integer,
>       |       ^~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_bool()’:
> ./core/cmdline_option.h:200:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   200 |           type = Boolean;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:200:18: error: ‘Boolean’ was not declared in this scope; did you mean ‘MR::App::Boolean’?
>   200 |           type = Boolean;
>       |                  ^~~~~~~
>       |                  MR::App::Boolean
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:47:7: note: ‘MR::App::Boolean’ declared here
>    47 |       Boolean,
>       |       ^~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_float(int, int)’:
> ./core/cmdline_option.h:209:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   209 |           type = Float;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:209:18: error: ‘Float’ was not declared in this scope; did you mean ‘MR::App::Float’?
>   209 |           type = Float;
>       |                  ^~~~~
>       |                  MR::App::Float
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:49:7: note: ‘MR::App::Float’ declared here
>    49 |       Float,
>       |       ^~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:210:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘min’
>   210 |           limits.f.min = min;
>       |                    ^~~
> ./core/cmdline_option.h:211:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘max’
>   211 |           limits.f.max = max;
>       |                    ^~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_choice(const char* const*)’:
> ./core/cmdline_option.h:228:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   228 |           type = Choice;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:228:18: error: ‘Choice’ was not declared in this scope; did you mean ‘MR::App::Choice’?
>   228 |           type = Choice;
>       |                  ^~~~~~
>       |                  MR::App::Choice
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:54:7: note: ‘MR::App::Choice’ declared here
>    54 |       Choice,
>       |       ^~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_in()’:
> ./core/cmdline_option.h:236:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   236 |           type = ArgFileIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:236:18: error: ‘ArgFileIn’ was not declared in this scope; did you mean ‘MR::App::ArgFileIn’?
>   236 |           type = ArgFileIn;
>       |                  ^~~~~~~~~
>       |                  MR::App::ArgFileIn
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:50:7: note: ‘MR::App::ArgFileIn’ declared here
>    50 |       ArgFileIn,
>       |       ^~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_out()’:
> ./core/cmdline_option.h:243:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   243 |           type = ArgFileOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:243:18: error: ‘ArgFileOut’ was not declared in this scope; did you mean ‘MR::App::ArgFileOut’?
>   243 |           type = ArgFileOut;
>       |                  ^~~~~~~~~~
>       |                  MR::App::ArgFileOut
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:51:7: note: ‘MR::App::ArgFileOut’ declared here
>    51 |       ArgFileOut,
>       |       ^~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_in()’:
> ./core/cmdline_option.h:250:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   250 |           type = ArgDirectoryIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:250:18: error: ‘ArgDirectoryIn’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryIn’?
>   250 |           type = ArgDirectoryIn;
>       |                  ^~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryIn
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:52:7: note: ‘MR::App::ArgDirectoryIn’ declared here
>    52 |       ArgDirectoryIn,
>       |       ^~~~~~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_out()’:
> ./core/cmdline_option.h:257:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   257 |           type = ArgDirectoryOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:257:18: error: ‘ArgDirectoryOut’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryOut’?
>   257 |           type = ArgDirectoryOut;
>       |                  ^~~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryOut
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:53:7: note: ‘MR::App::ArgDirectoryOut’ declared here
>    53 |       ArgDirectoryOut,
>       |       ^~~~~~~~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_int()’:
> ./core/cmdline_option.h:264:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   264 |           type = IntSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:264:18: error: ‘IntSeq’ was not declared in this scope; did you mean ‘MR::App::IntSeq’?
>   264 |           type = IntSeq;
>       |                  ^~~~~~
>       |                  MR::App::IntSeq
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:57:7: note: ‘MR::App::IntSeq’ declared here
>    57 |       IntSeq,
>       |       ^~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_float()’:
> ./core/cmdline_option.h:271:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   271 |           type = FloatSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:271:18: error: ‘FloatSeq’ was not declared in this scope; did you mean ‘MR::App::FloatSeq’?
>   271 |           type = FloatSeq;
>       |                  ^~~~~~~~
>       |                  MR::App::FloatSeq
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:58:7: note: ‘MR::App::FloatSeq’ declared here
>    58 |       FloatSeq,
>       |       ^~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_in()’:
> ./core/cmdline_option.h:278:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   278 |           type = TracksIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:278:18: error: ‘TracksIn’ was not declared in this scope; did you mean ‘MR::App::TracksIn’?
>   278 |           type = TracksIn;
>       |                  ^~~~~~~~
>       |                  MR::App::TracksIn
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:59:7: note: ‘MR::App::TracksIn’ declared here
>    59 |       TracksIn,
>       |       ^~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_out()’:
> ./core/cmdline_option.h:285:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   285 |           type = TracksOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:285:18: error: ‘TracksOut’ was not declared in this scope; did you mean ‘MR::App::TracksOut’?
>   285 |           type = TracksOut;
>       |                  ^~~~~~~~~
>       |                  MR::App::TracksOut
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:60:7: note: ‘MR::App::TracksOut’ declared here
>    60 |       TracksOut,
>       |       ^~~~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_various()’:
> ./core/cmdline_option.h:292:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   292 |           type = Various;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:292:18: error: ‘Various’ was not declared in this scope; did you mean ‘MR::App::Various’?
>   292 |           type = Various;
>       |                  ^~~~~~~
>       |                  MR::App::Various
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h:61:7: note: ‘MR::App::Various’ declared here
>    61 |       Various
>       |       ^~~~~~~
> In file included from ./core/datatype.h:20,
>                  from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/cmdline_option.h: At global scope:
> ./core/cmdline_option.h:343:33: error: expected template-name before ‘<’ token
>   343 |     class Option : public vector<Argument> { NOMEMALIGN
>       |                                 ^
> ./core/cmdline_option.h:343:33: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:343:33: error: expected unqualified-id before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected template-name before ‘<’ token
>   418 |     class OptionGroup : public vector<Option> { NOMEMALIGN
>       |                                      ^
> ./core/cmdline_option.h:418:38: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected unqualified-id before ‘<’ token
> In file included from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/datatype.h:184:14: error: ‘App’ does not name a type
>   184 |       static App::OptionGroup options ();
>       |              ^~~
> ./core/datatype.h: In member function ‘bool MR::DataType::is_byte_order_native()’:
> ./core/datatype.h:70:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    70 |           throw Exception ("byte order not set!");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/image_io/fetch_store.h:21,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/datatype.h: At global scope:
> ./core/datatype.h:200:22: error: ‘DataType’ does not name a type
>   200 |   template <> inline DataType DataType::from<bool> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:204:22: error: ‘DataType’ does not name a type
>   204 |   template <> inline DataType DataType::from<int8_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:208:22: error: ‘DataType’ does not name a type
>   208 |   template <> inline DataType DataType::from<uint8_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:212:22: error: ‘DataType’ does not name a type
>   212 |   template <> inline DataType DataType::from<int16_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:216:22: error: ‘DataType’ does not name a type
>   216 |   template <> inline DataType DataType::from<uint16_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:220:22: error: ‘DataType’ does not name a type
>   220 |   template <> inline DataType DataType::from<int32_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:224:22: error: ‘DataType’ does not name a type
>   224 |   template <> inline DataType DataType::from<uint32_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:228:22: error: ‘DataType’ does not name a type
>   228 |   template <> inline DataType DataType::from<int64_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:232:22: error: ‘DataType’ does not name a type
>   232 |   template <> inline DataType DataType::from<uint64_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:236:22: error: ‘DataType’ does not name a type
>   236 |   template <> inline DataType DataType::from<float> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:240:22: error: ‘DataType’ does not name a type
>   240 |   template <> inline DataType DataType::from<double> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:244:22: error: ‘DataType’ does not name a type
>   244 |   template <> inline DataType DataType::from<cfloat> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:248:22: error: ‘DataType’ does not name a type
>   248 |   template <> inline DataType DataType::from<cdouble> ()
>       |                      ^~~~~~~~
> In file included from core/image_io/fetch_store.cpp:17:
> ./core/image_io/fetch_store.h:28:30: error: ‘is_data_type’ was not declared in this scope; did you mean ‘MR::is_data_type’?
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                              ^~~~~~~~~~~~
>       |                              MR::is_data_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:248:12: note: ‘MR::is_data_type’ declared here
>   248 |     struct is_data_type :
>       |            ^~~~~~~~~~~~
> In file included from core/image_io/fetch_store.cpp:17:
> ./core/image_io/fetch_store.h:28:42: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                          ^
> ./core/image_io/fetch_store.h:28:52: error: template argument 1 is invalid
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                    ^
> ./core/image_io/fetch_store.h:28:53: error: expected identifier before ‘::’ token
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                     ^~
> ./core/image_io/fetch_store.h:28:55: error: declaration of ‘value’ not in a namespace surrounding ‘::’
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                       ^~~~~
> ./core/image_io/fetch_store.h:28:55: error: ‘value’ should have been declared inside ‘::’
> ./core/image_io/fetch_store.h:28:53: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                     ^~
> ./core/image_io/fetch_store.h:28:60: error: expected ‘;’ before ‘,’ token
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                            ^
>       |                                                            ;
> ./core/image_io/fetch_store.h:36:29: error: ‘is_data_type’ was not declared in this scope; did you mean ‘MR::is_data_type’?
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                             ^~~~~~~~~~~~
>       |                             MR::is_data_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:248:12: note: ‘MR::is_data_type’ declared here
>   248 |     struct is_data_type :
>       |            ^~~~~~~~~~~~
> In file included from core/image_io/fetch_store.cpp:17:
> ./core/image_io/fetch_store.h:36:51: error: template argument 1 is invalid
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                   ^
> ./core/image_io/fetch_store.h:36:52: error: expected identifier before ‘::’ token
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                    ^~
> ./core/image_io/fetch_store.h:36:54: error: declaration of ‘value’ not in a namespace surrounding ‘::’
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                      ^~~~~
> ./core/image_io/fetch_store.h:36:54: error: ‘value’ should have been declared inside ‘::’
> ./core/image_io/fetch_store.h:36:54: error: redeclaration of ‘template<class ValueType> int value’
> ./core/image_io/fetch_store.h:28:53: note: previous declaration ‘template<class ValueType> int value<ValueType>’
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                     ^~
> ./core/image_io/fetch_store.h:36:52: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                    ^~
> ./core/image_io/fetch_store.h:36:59: error: expected ‘;’ before ‘,’ token
>    36 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                           ^
>       |                                                           ;
> core/image_io/fetch_store.cpp: In function ‘typename std::enable_if<std::is_same<std::complex<typename TypeOUT::value_type>, TypeOUT>::value, TypeOUT>::type Eigen::round_func(TypeIN, typename std::enable_if<std::is_arithmetic<TypeIN>::value>::type*)’:
> core/image_io/fetch_store.cpp:60:16: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>    60 |         return round_func<typename TypeOUT::value_type> (in);
>       |                ^~~~~~~~~~
>       |                Eigen::round_func
> core/image_io/fetch_store.cpp:59:7: note: ‘Eigen::round_func’ declared here
>    59 |       round_func (TypeIN in, typename std::enable_if<std::is_arithmetic<TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:60:55: error: expected ‘(’ before ‘>’ token
>    60 |         return round_func<typename TypeOUT::value_type> (in);
>       |                                                       ^
>       |                                                       (
> core/image_io/fetch_store.cpp: In function ‘typename std::enable_if<std::is_arithmetic<_Tp>::value, TypeOUT>::type Eigen::round_func(TypeIN, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type*)’:
> core/image_io/fetch_store.cpp:67:16: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>    67 |         return round_func<TypeOUT> (in.real());
>       |                ^~~~~~~~~~
>       |                Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:67:34: error: expected primary-expression before ‘>’ token
>    67 |         return round_func<TypeOUT> (in.real());
>       |                                  ^
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:74:75: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    74 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                           ^~~~~~~~~~~~
>       |                                                                           MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:74:87: error: template argument 2 is invalid
>    74 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                                       ^
> core/image_io/fetch_store.cpp:74:88: error: ‘<declaration error>’ is not a template [-fpermissive]
>    74 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                                        ^~
> core/image_io/fetch_store.cpp:75:41: error: ‘default_type’ has not been declared
>    75 |       scale_from_storage (DiskType val, default_type offset, default_type scale) {
>       |                                         ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:75:62: error: ‘default_type’ has not been declared
>    75 |       scale_from_storage (DiskType val, default_type offset, default_type scale) {
>       |                                                              ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:81:41: error: ‘default_type’ has not been declared
>    81 |       scale_from_storage (DiskType val, default_type offset, default_type scale) {
>       |                                         ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:81:62: error: ‘default_type’ has not been declared
>    81 |       scale_from_storage (DiskType val, default_type offset, default_type scale) {
>       |                                                              ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:87:75: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    87 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                           ^~~~~~~~~~~~
>       |                                                                           MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:87:87: error: template argument 2 is invalid
>    87 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                                       ^
> core/image_io/fetch_store.cpp:87:88: error: ‘<declaration error>’ is not a template [-fpermissive]
>    87 |       inline typename std::enable_if<std::is_arithmetic<DiskType>::value, default_type>::type
>       |                                                                                        ^~
> core/image_io/fetch_store.cpp:88:39: error: ‘default_type’ has not been declared
>    88 |       scale_to_storage (DiskType val, default_type offset, default_type scale) {
>       |                                       ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:88:60: error: ‘default_type’ has not been declared
>    88 |       scale_to_storage (DiskType val, default_type offset, default_type scale) {
>       |                                                            ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:94:39: error: ‘default_type’ has not been declared
>    94 |       scale_to_storage (DiskType val, default_type offset, default_type scale) {
>       |                                       ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:94:60: error: ‘default_type’ has not been declared
>    94 |       scale_to_storage (DiskType val, default_type offset, default_type scale) {
>       |                                                            ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:103:52: error: ‘default_type’ has not been declared
>   103 |       RAMType __fetch (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                    ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:103:73: error: ‘default_type’ has not been declared
>   103 |       RAMType __fetch (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                         ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘RAMType Eigen::__fetch(const void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:104:16: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   104 |         return round_func<RAMType> (scale_from_storage (Raw::fetch<DiskType> (data, i), offset, scale));
>       |                ^~~~~~~~~~
>       |                Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:104:34: error: expected primary-expression before ‘>’ token
>   104 |         return round_func<RAMType> (scale_from_storage (Raw::fetch<DiskType> (data, i), offset, scale));
>       |                                  ^
> core/image_io/fetch_store.cpp:104:57: error: ‘Raw’ has not been declared
>   104 |         return round_func<RAMType> (scale_from_storage (Raw::fetch<DiskType> (data, i), offset, scale));
>       |                                                         ^~~
> core/image_io/fetch_store.cpp:104:76: error: expected primary-expression before ‘>’ token
>   104 |         return round_func<RAMType> (scale_from_storage (Raw::fetch<DiskType> (data, i), offset, scale));
>       |                                                                            ^
> core/image_io/fetch_store.cpp:104:37: error: there are no arguments to ‘scale_from_storage’ that depend on a template parameter, so a declaration of ‘scale_from_storage’ must be available [-fpermissive]
>   104 |         return round_func<RAMType> (scale_from_storage (Raw::fetch<DiskType> (data, i), offset, scale));
>       |                                     ^~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:108:56: error: ‘default_type’ has not been declared
>   108 |       void __store (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                        ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:108:77: error: ‘default_type’ has not been declared
>   108 |       void __store (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                             ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘void Eigen::__store(RAMType, void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:109:16: error: ‘Raw’ has not been declared
>   109 |         return Raw::store<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                ^~~
> core/image_io/fetch_store.cpp:109:35: error: expected primary-expression before ‘>’ token
>   109 |         return Raw::store<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                   ^
> core/image_io/fetch_store.cpp:109:38: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   109 |         return Raw::store<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                      ^~~~~~~~~~
>       |                                      Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:109:57: error: expected primary-expression before ‘>’ token
>   109 |         return Raw::store<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                                         ^
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:115:55: error: ‘default_type’ has not been declared
>   115 |       RAMType __fetch_LE (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                       ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:115:76: error: ‘default_type’ has not been declared
>   115 |       RAMType __fetch_LE (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                            ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘RAMType Eigen::__fetch_LE(const void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:116:16: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   116 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_LE<DiskType> (data, i), offset, scale));
>       |                ^~~~~~~~~~
>       |                Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:116:34: error: expected primary-expression before ‘>’ token
>   116 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_LE<DiskType> (data, i), offset, scale));
>       |                                  ^
> core/image_io/fetch_store.cpp:116:57: error: ‘Raw’ has not been declared
>   116 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_LE<DiskType> (data, i), offset, scale));
>       |                                                         ^~~
> core/image_io/fetch_store.cpp:116:79: error: expected primary-expression before ‘>’ token
>   116 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_LE<DiskType> (data, i), offset, scale));
>       |                                                                               ^
> core/image_io/fetch_store.cpp:116:37: error: there are no arguments to ‘scale_from_storage’ that depend on a template parameter, so a declaration of ‘scale_from_storage’ must be available [-fpermissive]
>   116 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_LE<DiskType> (data, i), offset, scale));
>       |                                     ^~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:120:59: error: ‘default_type’ has not been declared
>   120 |       void __store_LE (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                           ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:120:80: error: ‘default_type’ has not been declared
>   120 |       void __store_LE (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                                ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘void Eigen::__store_LE(RAMType, void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:121:16: error: ‘Raw’ has not been declared
>   121 |         return Raw::store_LE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                ^~~
> core/image_io/fetch_store.cpp:121:38: error: expected primary-expression before ‘>’ token
>   121 |         return Raw::store_LE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                      ^
> core/image_io/fetch_store.cpp:121:41: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   121 |         return Raw::store_LE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                         ^~~~~~~~~~
>       |                                         Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:121:60: error: expected primary-expression before ‘>’ token
>   121 |         return Raw::store_LE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                                            ^
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:128:55: error: ‘default_type’ has not been declared
>   128 |       RAMType __fetch_BE (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                       ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:128:76: error: ‘default_type’ has not been declared
>   128 |       RAMType __fetch_BE (const void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                            ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘RAMType Eigen::__fetch_BE(const void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:129:16: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   129 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_BE<DiskType> (data, i), offset, scale));
>       |                ^~~~~~~~~~
>       |                Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:129:34: error: expected primary-expression before ‘>’ token
>   129 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_BE<DiskType> (data, i), offset, scale));
>       |                                  ^
> core/image_io/fetch_store.cpp:129:57: error: ‘Raw’ has not been declared
>   129 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_BE<DiskType> (data, i), offset, scale));
>       |                                                         ^~~
> core/image_io/fetch_store.cpp:129:79: error: expected primary-expression before ‘>’ token
>   129 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_BE<DiskType> (data, i), offset, scale));
>       |                                                                               ^
> core/image_io/fetch_store.cpp:129:37: error: there are no arguments to ‘scale_from_storage’ that depend on a template parameter, so a declaration of ‘scale_from_storage’ must be available [-fpermissive]
>   129 |         return round_func<RAMType> (scale_from_storage (Raw::fetch_BE<DiskType> (data, i), offset, scale));
>       |                                     ^~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:133:59: error: ‘default_type’ has not been declared
>   133 |       void __store_BE (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                           ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:133:80: error: ‘default_type’ has not been declared
>   133 |       void __store_BE (RAMType val, void* data, size_t i, default_type offset, default_type scale) {
>       |                                                                                ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp: In function ‘void Eigen::__store_BE(RAMType, void*, std::size_t, int, int)’:
> core/image_io/fetch_store.cpp:134:16: error: ‘Raw’ has not been declared
>   134 |         return Raw::store_BE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                ^~~
> core/image_io/fetch_store.cpp:134:38: error: expected primary-expression before ‘>’ token
>   134 |         return Raw::store_BE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                      ^
> core/image_io/fetch_store.cpp:134:41: error: ‘round_func’ was not declared in this scope; did you mean ‘Eigen::round_func’?
>   134 |         return Raw::store_BE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                         ^~~~~~~~~~
>       |                                         Eigen::round_func
> core/image_io/fetch_store.cpp:66:7: note: ‘Eigen::round_func’ declared here
>    66 |       round_func (TypeIN in, typename std::enable_if<std::is_same<std::complex<typename TypeIN::value_type>, TypeIN>::value>::type* = nullptr) {
>       |       ^~~~~~~~~~
> core/image_io/fetch_store.cpp:134:60: error: expected primary-expression before ‘>’ token
>   134 |         return Raw::store_BE<DiskType> (round_func<DiskType> (scale_to_storage (val, offset, scale)), data, i);
>       |                                                            ^
> core/image_io/fetch_store.cpp: At global scope:
> core/image_io/fetch_store.cpp:145:29: error: ‘is_data_type’ was not declared in this scope; did you mean ‘MR::is_data_type’?
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                             ^~~~~~~~~~~~
>       |                             MR::is_data_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/raw.h:25,
>                  from ./core/image_io/fetch_store.h:20,
>                  from core/image_io/fetch_store.cpp:17:
> ./core/types.h:248:12: note: ‘MR::is_data_type’ declared here
>   248 |     struct is_data_type :
>       |            ^~~~~~~~~~~~
> core/image_io/fetch_store.cpp:145:51: error: template argument 1 is invalid
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                   ^
> core/image_io/fetch_store.cpp:145:52: error: expected identifier before ‘::’ token
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                    ^~
> core/image_io/fetch_store.cpp:145:54: error: declaration of ‘value’ not in a namespace surrounding ‘::’
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                      ^~~~~
> core/image_io/fetch_store.cpp:145:54: error: ‘value’ should have been declared inside ‘::’
> core/image_io/fetch_store.cpp:145:54: error: redeclaration of ‘template<class ValueType> int value’
> In file included from core/image_io/fetch_store.cpp:17:
> ./core/image_io/fetch_store.h:28:53: note: previous declaration ‘template<class ValueType> int value<ValueType>’
>    28 |     typename std::enable_if<!is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                     ^~
> core/image_io/fetch_store.cpp:145:52: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                    ^~
> core/image_io/fetch_store.cpp:145:59: error: expected ‘;’ before ‘,’ token
>   145 |     typename std::enable_if<is_data_type<ValueType>::value, void>::type __set_fetch_store_functions (
>       |                                                           ^
>       |                                                           ;
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:255:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   255 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(bool);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:255:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   255 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(bool);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:256:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   256 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint8_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:256:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   256 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint8_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:257:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   257 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int8_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:257:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   257 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int8_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:258:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   258 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint16_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:258:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   258 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint16_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:259:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   259 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int16_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:259:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   259 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int16_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:260:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   260 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint32_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:260:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   260 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint32_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:261:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   261 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int32_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:261:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   261 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int32_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:262:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   262 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint64_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:262:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   262 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(uint64_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:263:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   263 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int64_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:263:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   263 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(int64_t);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:264:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   264 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(float);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:264:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   264 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(float);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:265:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   265 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(double);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:265:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   265 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(double);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:266:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   266 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(cfloat);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:266:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   266 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(cfloat);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:17: error: variable or field ‘__set_fetch_store_functions’ declared void
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:267:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   267 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(cdouble);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> core/image_io/fetch_store.cpp:250:44: error: expected ‘;’ before ‘<’ token
>   250 |   template void __set_fetch_store_functions<ValueType> ( \
>       |                                            ^
> core/image_io/fetch_store.cpp:267:3: note: in expansion of macro ‘__DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE’
>   267 |   __DEFINE_FETCH_STORE_FUNCTION_FOR_TYPE(cdouble);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> ERROR: (  3/546) [CC] tmp/core/math/zstatistic.o
> 
> g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version with openmp" -pthread -fPIC -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -mmmx -msse -msse2 -mfpmath=sse -DMRTRIX_WORD64 -DMRTRIX_HAVE_EIGEN_UNSUPPORTED_SPECIAL_FUNCTIONS -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DMRTRIX_PNG_SUPPORT -idirafter /usr/include/libpng16 -DEIGEN_FFTW_DEFAULT -fopenmp -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -idirafter /usr/include/eigen3 core/math/zstatistic.cpp -o tmp/core/math/zstatistic.o
> 
> failed with output
> 
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:326:49: error: ‘using Vector3 = class Eigen::Matrix<double, 3, 1>’ redeclared as different kind of entity
>   326 |   using Vector3 = Matrix<MR::default_type, 3, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: previous declaration ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:327:49: error: ‘using Vector4 = class Eigen::Matrix<double, 4, 1>’ redeclared as different kind of entity
>   327 |   using Vector4 = Matrix<MR::default_type, 4, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:542:1: note: previous declaration ‘template<class Type> using Vector4 = Eigen::Matrix<Type, 4, 1>’
>   542 | EIGEN_MAKE_TYPEDEFS(4, 4)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:36,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:20:8: error: ‘traits’ is not a class template
>    20 | struct traits<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |        ^~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:20:15: error: ‘TridiagonalizationMatrixTReturnType’ was not declared in this scope; did you mean ‘Eigen::internal::TridiagonalizationMatrixTReturnType’?
>    20 | struct traits<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |               Eigen::internal::TridiagonalizationMatrixTReturnType
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:18:38: note: ‘Eigen::internal::TridiagonalizationMatrixTReturnType’ declared here
>    18 | template<typename MatrixType> struct TridiagonalizationMatrixTReturnType;
>       |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:20:8: error: template argument required for ‘struct traits’
>    20 | struct traits<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |        ^~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:20:63: error: expected unqualified-id before ‘>’ token
>    20 | struct traits<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |                                                               ^
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:36,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h: In function ‘void Eigen::tridiagonalization_inplace(MatrixType&, DiagonalType&, SubDiagonalType&, CoeffVectorType&, bool)’:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:434:3: error: ‘tridiagonalization_inplace_selector’ was not declared in this scope; did you mean ‘Eigen::internal::tridiagonalization_inplace_selector’?
>   434 |   tridiagonalization_inplace_selector<MatrixType>::run(mat, diag, subdiag, hcoeffs, extractQ);
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |   Eigen::internal::tridiagonalization_inplace_selector
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:386:8: note: ‘Eigen::internal::tridiagonalization_inplace_selector’ declared here
>   386 | struct tridiagonalization_inplace_selector;
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:434:49: error: expected primary-expression before ‘>’ token
>   434 |   tridiagonalization_inplace_selector<MatrixType>::run(mat, diag, subdiag, hcoeffs, extractQ);
>       |                                                 ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:434:52: error: ‘::run’ has not been declared
>   434 |   tridiagonalization_inplace_selector<MatrixType>::run(mat, diag, subdiag, hcoeffs, extractQ);
>       |                                                    ^~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h: At global scope:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:464:8: error: ‘tridiagonalization_inplace_selector’ is not a class template
>   464 | struct tridiagonalization_inplace_selector<MatrixType,3,false>
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:464:62: error: redeclared with 1 template parameter
>   464 | struct tridiagonalization_inplace_selector<MatrixType,3,false>
>       |                                                              ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:386:8: note: previous declaration ‘template<class MatrixType, int Size, bool IsComplex> struct Eigen::internal::tridiagonalization_inplace_selector’ used 3 template parameters
>   386 | struct tridiagonalization_inplace_selector;
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:510:8: error: ‘tridiagonalization_inplace_selector’ is not a class template
>   510 | struct tridiagonalization_inplace_selector<MatrixType,1,IsComplex>
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:510:66: error: redeclared with 2 template parameters
>   510 | struct tridiagonalization_inplace_selector<MatrixType,1,IsComplex>
>       |                                                                  ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:386:8: note: previous declaration ‘template<class MatrixType, int Size, bool IsComplex> struct Eigen::internal::tridiagonalization_inplace_selector’ used 3 template parameters
>   386 | struct tridiagonalization_inplace_selector;
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:532:24: error: ‘TridiagonalizationMatrixTReturnType’ was not declared in this scope; did you mean ‘Eigen::internal::TridiagonalizationMatrixTReturnType’?
>   532 | : public ReturnByValue<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                        Eigen::internal::TridiagonalizationMatrixTReturnType
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:36,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:18:38: note: ‘Eigen::internal::TridiagonalizationMatrixTReturnType’ declared here
>    18 | template<typename MatrixType> struct TridiagonalizationMatrixTReturnType;
>       |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:36,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:532:70: error: template argument 1 is invalid
>   532 | : public ReturnByValue<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |                                                                      ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h:532:72: error: expected ‘{’ before ‘>’ token
>   532 | : public ReturnByValue<TridiagonalizationMatrixTReturnType<MatrixType> >
>       |                                                                        ^
> In file included from /usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:14,
>                  from /usr/include/eigen3/Eigen/Eigenvalues:37,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:20:8: error: ‘traits’ is not a class template
>    20 | struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |        ^~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:20:15: error: ‘HessenbergDecompositionMatrixHReturnType’ was not declared in this scope; did you mean ‘Eigen::internal::HessenbergDecompositionMatrixHReturnType’?
>    20 | struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |               Eigen::internal::HessenbergDecompositionMatrixHReturnType
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:18:38: note: ‘Eigen::internal::HessenbergDecompositionMatrixHReturnType’ declared here
>    18 | template<typename MatrixType> struct HessenbergDecompositionMatrixHReturnType;
>       |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:20:8: error: template argument required for ‘struct traits’
>    20 | struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |        ^~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:20:68: error: expected unqualified-id before ‘>’ token
>    20 | struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |                                                                    ^
> In file included from /usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:14,
>                  from /usr/include/eigen3/Eigen/Eigenvalues:37,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:340:24: error: ‘HessenbergDecompositionMatrixHReturnType’ was not declared in this scope; did you mean ‘Eigen::internal::HessenbergDecompositionMatrixHReturnType’?
>   340 | : public ReturnByValue<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                        Eigen::internal::HessenbergDecompositionMatrixHReturnType
> In file included from /usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:14,
>                  from /usr/include/eigen3/Eigen/Eigenvalues:37,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:18:38: note: ‘Eigen::internal::HessenbergDecompositionMatrixHReturnType’ declared here
>    18 | template<typename MatrixType> struct HessenbergDecompositionMatrixHReturnType;
>       |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h:14,
>                  from /usr/include/eigen3/Eigen/Eigenvalues:37,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:340:75: error: template argument 1 is invalid
>   340 | : public ReturnByValue<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |                                                                           ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h:340:77: error: expected ‘{’ before ‘>’ token
>   340 | : public ReturnByValue<HessenbergDecompositionMatrixHReturnType<MatrixType> >
>       |                                                                             ^
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:39,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:582:38: error: ‘direct_selfadjoint_eigenvalues’ is not a class template
>   582 | template<typename SolverType> struct direct_selfadjoint_eigenvalues<SolverType,3,false>
>       |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:582:87: error: redeclared with 1 template parameter
>   582 | template<typename SolverType> struct direct_selfadjoint_eigenvalues<SolverType,3,false>
>       |                                                                                       ^
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:39,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:22:62: note: previous declaration ‘template<class SolverType, int Size, bool IsComplex> struct Eigen::internal::direct_selfadjoint_eigenvalues’ used 3 template parameters
>    22 | template<typename SolverType,int Size,bool IsComplex> struct direct_selfadjoint_eigenvalues;
>       |                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:39,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:741:8: error: ‘direct_selfadjoint_eigenvalues’ is not a class template
>   741 | struct direct_selfadjoint_eigenvalues<SolverType,2,false>
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:741:57: error: redeclared with 1 template parameter
>   741 | struct direct_selfadjoint_eigenvalues<SolverType,2,false>
>       |                                                         ^
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:39,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h:22:62: note: previous declaration ‘template<class SolverType, int Size, bool IsComplex> struct Eigen::internal::direct_selfadjoint_eigenvalues’ used 3 template parameters
>    22 | template<typename SolverType,int Size,bool IsComplex> struct direct_selfadjoint_eigenvalues;
>       |                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:42,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h:368:8: error: ‘complex_schur_reduce_to_hessenberg’ is not a class template
>   368 | struct complex_schur_reduce_to_hessenberg<MatrixType, false>
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h:368:60: error: redeclared with 1 template parameter
>   368 | struct complex_schur_reduce_to_hessenberg<MatrixType, false>
>       |                                                            ^
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:42,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h:20:54: note: previous declaration ‘template<class MatrixType, bool IsComplex> struct Eigen::internal::complex_schur_reduce_to_hessenberg’ used 2 template parameters
>    20 | template<typename MatrixType, bool IsComplex> struct complex_schur_reduce_to_hessenberg;
>       |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Eigenvalues:46,
>                  from /usr/include/eigen3/Eigen/Dense:7,
>                  from ./core/math/stats/typedefs.h:22,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h:32:8: error: ‘eigenvalues_selector’ is not a class template
>    32 | struct eigenvalues_selector<Derived, false>
>       |        ^~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h:32:43: error: redeclared with 1 template parameter
>    32 | struct eigenvalues_selector<Derived, false>
>       |                                           ^
> /usr/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h:19:8: note: previous declaration ‘template<class Derived, bool IsComplex> struct Eigen::internal::eigenvalues_selector’ used 2 template parameters
>    19 | struct eigenvalues_selector
>       |        ^~~~~~~~~~~~~~~~~~~~
> In file included from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/math/stats/typedefs.h:34:41: error: ‘value_type’ was not declared in this scope; did you mean ‘MR::Math::Stats::value_type’?
>    34 |       using matrix_type = Eigen::Matrix<value_type, Eigen::Dynamic, Eigen::Dynamic>;
>       |                                         ^~~~~~~~~~
>       |                                         MR::Math::Stats::value_type
> ./core/math/stats/typedefs.h:33:13: note: ‘MR::Math::Stats::value_type’ declared here
>    33 |       using value_type = MR::default_type;
>       |             ^~~~~~~~~~
> ./core/math/stats/typedefs.h:34:83: error: template argument 1 is invalid
>    34 |       using matrix_type = Eigen::Matrix<value_type, Eigen::Dynamic, Eigen::Dynamic>;
>       |                                                                                   ^
> ./core/math/stats/typedefs.h:35:40: error: ‘value_type’ was not declared in this scope; did you mean ‘MR::Math::Stats::value_type’?
>    35 |       using vector_type = Eigen::Array<value_type, Eigen::Dynamic, 1>;
>       |                                        ^~~~~~~~~~
>       |                                        MR::Math::Stats::value_type
> ./core/math/stats/typedefs.h:33:13: note: ‘MR::Math::Stats::value_type’ declared here
>    33 |       using value_type = MR::default_type;
>       |             ^~~~~~~~~~
> ./core/math/stats/typedefs.h:35:69: error: template argument 1 is invalid
>    35 |       using vector_type = Eigen::Array<value_type, Eigen::Dynamic, 1>;
>       |                                                                     ^
> In file included from core/math/zstatistic.cpp:18:
> ./core/math/zstatistic.h:33:5: error: ‘default_type’ does not name a type
>    33 |     default_type t2z (const default_type stat, const default_type dof);
>       |     ^~~~~~~~~~~~
> ./core/math/zstatistic.h:34:5: error: ‘default_type’ does not name a type
>    34 |     default_type F2z (const default_type stat, const size_t rank, const default_type dof);
>       |     ^~~~~~~~~~~~
> ./core/math/zstatistic.h:44:9: error: ‘default_type’ does not name a type
>    44 |         default_type t2z (const default_type t,
>       |         ^~~~~~~~~~~~
> ./core/math/zstatistic.h:48:9: error: ‘default_type’ does not name a type
>    48 |         default_type F2z (const default_type F,
>       |         ^~~~~~~~~~~~
> ./core/math/zstatistic.h:53:9: error: ‘default_type’ does not name a type
>    53 |         default_type v2z (const default_type v,
>       |         ^~~~~~~~~~~~
> ./core/math/zstatistic.h:57:9: error: ‘default_type’ does not name a type
>    57 |         default_type G2z (const default_type G,
>       |         ^~~~~~~~~~~~
> ./core/math/zstatistic.h:67:45: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    67 |             using array_type = Eigen::Array<default_type, Eigen::Dynamic, 1>;
>       |                                             ^~~~~~~~~~~~
>       |                                             MR::default_type
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from core/math/zstatistic.cpp:18:
> ./core/math/zstatistic.h:67:76: error: template argument 1 is invalid
>    67 |             using array_type = Eigen::Array<default_type, Eigen::Dynamic, 1>;
>       |                                                                            ^
> ./core/math/zstatistic.h:68:21: error: ‘default_type’ does not name a type
>    68 |             virtual default_type operator() (const default_type) const = 0;
>       |                     ^~~~~~~~~~~~
> ./core/math/zstatistic.h:74:13: error: ‘default_type’ does not name a type
>    74 |             default_type interp (const default_type stat,
>       |             ^~~~~~~~~~~~
> ./core/math/zstatistic.h:85:13: error: ‘default_type’ does not name a type
>    85 |             default_type operator() (const default_type) const override;
>       |             ^~~~~~~~~~~~
> ./core/math/zstatistic.h:89:19: error: ‘default_type’ does not name a type
>    89 |             const default_type offset, scale;
>       |                   ^~~~~~~~~~~~
> ./core/math/zstatistic.h:90:13: error: ‘array_type’ does not name a type
>    90 |             array_type data;
>       |             ^~~~~~~~~~
> ./core/math/zstatistic.h:97:13: error: ‘default_type’ does not name a type
>    97 |             default_type operator() (const default_type) const override;
>       |             ^~~~~~~~~~~~
> ./core/math/zstatistic.h:100:19: error: ‘default_type’ does not name a type
>   100 |             const default_type offset_upper, scale_upper;
>       |                   ^~~~~~~~~~~~
> ./core/math/zstatistic.h:101:13: error: ‘array_type’ does not name a type
>   101 |             array_type data_upper;
>       |             ^~~~~~~~~~
> ./core/math/zstatistic.h:102:19: error: ‘default_type’ does not name a type
>   102 |             const default_type offset_lower, scale_lower;
>       |                   ^~~~~~~~~~~~
> ./core/math/zstatistic.h:103:13: error: ‘array_type’ does not name a type
>   103 |             array_type data_lower;
>       |             ^~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:63,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:49:54: error: expected nested-name-specifier before ‘unpacket_traits’
>    49 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:49:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:60:8: error: ‘generic_i0e’ is not a class template
>    60 | struct generic_i0e<T, float> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:60:28: error: redeclared with 1 template parameter
>    60 | struct generic_i0e<T, float> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:50:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_i0e’ used 2 template parameters
>    50 | struct generic_i0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:125:8: error: ‘generic_i0e’ is not a class template
>   125 | struct generic_i0e<T, double> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:125:29: error: redeclared with 1 template parameter
>   125 | struct generic_i0e<T, double> {
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:50:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_i0e’ used 2 template parameters
>    50 | struct generic_i0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_i0e_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:208:12: error: ‘generic_i0e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i0e’?
>   208 |     return generic_i0e<T>::run(x);
>       |            ^~~~~~~~~~~
>       |            Eigen::internal::generic_i0e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:50:8: note: ‘Eigen::internal::generic_i0e’ declared here
>    50 | struct generic_i0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:208:25: error: expected primary-expression before ‘>’ token
>   208 |     return generic_i0e<T>::run(x);
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:208:28: error: ‘::run’ has not been declared
>   208 |     return generic_i0e<T>::run(x);
>       |                            ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:217:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   217 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:217:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::generic_i0<T, ScalarType>::run(const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:223:9: error: ‘generic_i0e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i0e’?
>   223 |         generic_i0e<T, ScalarType>::run(x));
>       |         ^~~~~~~~~~~
>       |         Eigen::internal::generic_i0e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:50:8: note: ‘Eigen::internal::generic_i0e’ declared here
>    50 | struct generic_i0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:223:22: error: expected primary-expression before ‘,’ token
>   223 |         generic_i0e<T, ScalarType>::run(x));
>       |                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:223:34: error: expected primary-expression before ‘>’ token
>   223 |         generic_i0e<T, ScalarType>::run(x));
>       |                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:223:37: error: ‘::run’ has not been declared
>   223 |         generic_i0e<T, ScalarType>::run(x));
>       |                                     ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_i0_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:231:12: error: ‘generic_i0’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i0’?
>   231 |     return generic_i0<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_i0
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:218:8: note: ‘Eigen::internal::generic_i0’ declared here
>   218 | struct generic_i0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:231:24: error: expected primary-expression before ‘>’ token
>   231 |     return generic_i0<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:231:27: error: ‘::run’ has not been declared
>   231 |     return generic_i0<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:240:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   240 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type >
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:240:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:251:8: error: ‘generic_i1e’ is not a class template
>   251 | struct generic_i1e<T, float> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:251:28: error: redeclared with 1 template parameter
>   251 | struct generic_i1e<T, float> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:241:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_i1e’ used 2 template parameters
>   241 | struct generic_i1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:319:8: error: ‘generic_i1e’ is not a class template
>   319 | struct generic_i1e<T, double> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:319:29: error: redeclared with 1 template parameter
>   319 | struct generic_i1e<T, double> {
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:241:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_i1e’ used 2 template parameters
>   241 | struct generic_i1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_i1e_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:403:12: error: ‘generic_i1e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i1e’?
>   403 |     return generic_i1e<T>::run(x);
>       |            ^~~~~~~~~~~
>       |            Eigen::internal::generic_i1e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:241:8: note: ‘Eigen::internal::generic_i1e’ declared here
>   241 | struct generic_i1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:403:25: error: expected primary-expression before ‘>’ token
>   403 |     return generic_i1e<T>::run(x);
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:403:28: error: ‘::run’ has not been declared
>   403 |     return generic_i1e<T>::run(x);
>       |                            ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:412:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   412 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:412:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::generic_i1<T, ScalarType>::run(const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:418:9: error: ‘generic_i1e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i1e’?
>   418 |         generic_i1e<T, ScalarType>::run(x));
>       |         ^~~~~~~~~~~
>       |         Eigen::internal::generic_i1e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:241:8: note: ‘Eigen::internal::generic_i1e’ declared here
>   241 | struct generic_i1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:418:22: error: expected primary-expression before ‘,’ token
>   418 |         generic_i1e<T, ScalarType>::run(x));
>       |                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:418:34: error: expected primary-expression before ‘>’ token
>   418 |         generic_i1e<T, ScalarType>::run(x));
>       |                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:418:37: error: ‘::run’ has not been declared
>   418 |         generic_i1e<T, ScalarType>::run(x));
>       |                                     ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_i1_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:426:12: error: ‘generic_i1’ was not declared in this scope; did you mean ‘Eigen::internal::generic_i1’?
>   426 |     return generic_i1<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_i1
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:413:8: note: ‘Eigen::internal::generic_i1’ declared here
>   413 | struct generic_i1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:426:24: error: expected primary-expression before ‘>’ token
>   426 |     return generic_i1<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:426:27: error: ‘::run’ has not been declared
>   426 |     return generic_i1<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:435:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   435 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:435:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:446:8: error: ‘generic_k0e’ is not a class template
>   446 | struct generic_k0e<T, float> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:446:28: error: redeclared with 1 template parameter
>   446 | struct generic_k0e<T, float> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:436:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k0e’ used 2 template parameters
>   436 | struct generic_k0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:509:8: error: ‘generic_k0e’ is not a class template
>   509 | struct generic_k0e<T, double> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:509:29: error: redeclared with 1 template parameter
>   509 | struct generic_k0e<T, double> {
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:436:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k0e’ used 2 template parameters
>   436 | struct generic_k0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_k0e_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:589:12: error: ‘generic_k0e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_k0e’?
>   589 |     return generic_k0e<T>::run(x);
>       |            ^~~~~~~~~~~
>       |            Eigen::internal::generic_k0e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:436:8: note: ‘Eigen::internal::generic_k0e’ declared here
>   436 | struct generic_k0e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:589:25: error: expected primary-expression before ‘>’ token
>   589 |     return generic_k0e<T>::run(x);
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:589:28: error: ‘::run’ has not been declared
>   589 |     return generic_k0e<T>::run(x);
>       |                            ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:598:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   598 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:598:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:609:8: error: ‘generic_k0’ is not a class template
>   609 | struct generic_k0<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:609:27: error: redeclared with 1 template parameter
>   609 | struct generic_k0<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:599:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k0’ used 2 template parameters
>   599 | struct generic_k0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:680:8: error: ‘generic_k0’ is not a class template
>   680 | struct generic_k0<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:680:28: error: redeclared with 1 template parameter
>   680 | struct generic_k0<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:599:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k0’ used 2 template parameters
>   599 | struct generic_k0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_k0_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:761:12: error: ‘generic_k0’ was not declared in this scope; did you mean ‘Eigen::internal::generic_k0’?
>   761 |     return generic_k0<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_k0
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:599:8: note: ‘Eigen::internal::generic_k0’ declared here
>   599 | struct generic_k0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:761:24: error: expected primary-expression before ‘>’ token
>   761 |     return generic_k0<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:761:27: error: ‘::run’ has not been declared
>   761 |     return generic_k0<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:770:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   770 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:770:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:781:8: error: ‘generic_k1e’ is not a class template
>   781 | struct generic_k1e<T, float> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:781:28: error: redeclared with 1 template parameter
>   781 | struct generic_k1e<T, float> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:771:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k1e’ used 2 template parameters
>   771 | struct generic_k1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:843:8: error: ‘generic_k1e’ is not a class template
>   843 | struct generic_k1e<T, double> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:843:29: error: redeclared with 1 template parameter
>   843 | struct generic_k1e<T, double> {
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:771:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k1e’ used 2 template parameters
>   771 | struct generic_k1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_k1e_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:917:12: error: ‘generic_k1e’ was not declared in this scope; did you mean ‘Eigen::internal::generic_k1e’?
>   917 |     return generic_k1e<T>::run(x);
>       |            ^~~~~~~~~~~
>       |            Eigen::internal::generic_k1e
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:771:8: note: ‘Eigen::internal::generic_k1e’ declared here
>   771 | struct generic_k1e {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:917:25: error: expected primary-expression before ‘>’ token
>   917 |     return generic_k1e<T>::run(x);
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:917:28: error: ‘::run’ has not been declared
>   917 |     return generic_k1e<T>::run(x);
>       |                            ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:926:54: error: expected nested-name-specifier before ‘unpacket_traits’
>   926 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:926:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:937:8: error: ‘generic_k1’ is not a class template
>   937 | struct generic_k1<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:937:27: error: redeclared with 1 template parameter
>   937 | struct generic_k1<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:927:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k1’ used 2 template parameters
>   927 | struct generic_k1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1004:8: error: ‘generic_k1’ is not a class template
>  1004 | struct generic_k1<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1004:28: error: redeclared with 1 template parameter
>  1004 | struct generic_k1<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:927:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_k1’ used 2 template parameters
>   927 | struct generic_k1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_k1_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1083:12: error: ‘generic_k1’ was not declared in this scope; did you mean ‘Eigen::internal::generic_k1’?
>  1083 |     return generic_k1<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_k1
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:927:8: note: ‘Eigen::internal::generic_k1’ declared here
>   927 | struct generic_k1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1083:24: error: expected primary-expression before ‘>’ token
>  1083 |     return generic_k1<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1083:27: error: ‘::run’ has not been declared
>  1083 |     return generic_k1<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1092:54: error: expected nested-name-specifier before ‘unpacket_traits’
>  1092 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1092:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1103:8: error: ‘generic_j0’ is not a class template
>  1103 | struct generic_j0<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1103:27: error: redeclared with 1 template parameter
>  1103 | struct generic_j0<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1093:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_j0’ used 2 template parameters
>  1093 | struct generic_j0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1182:8: error: ‘generic_j0’ is not a class template
>  1182 | struct generic_j0<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1182:28: error: redeclared with 1 template parameter
>  1182 | struct generic_j0<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1093:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_j0’ used 2 template parameters
>  1093 | struct generic_j0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_j0_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1283:12: error: ‘generic_j0’ was not declared in this scope; did you mean ‘Eigen::internal::generic_j0’?
>  1283 |     return generic_j0<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_j0
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1093:8: note: ‘Eigen::internal::generic_j0’ declared here
>  1093 | struct generic_j0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1283:24: error: expected primary-expression before ‘>’ token
>  1283 |     return generic_j0<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1283:27: error: ‘::run’ has not been declared
>  1283 |     return generic_j0<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1292:54: error: expected nested-name-specifier before ‘unpacket_traits’
>  1292 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1292:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1303:8: error: ‘generic_y0’ is not a class template
>  1303 | struct generic_y0<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1303:27: error: redeclared with 1 template parameter
>  1303 | struct generic_y0<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1293:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_y0’ used 2 template parameters
>  1293 | struct generic_y0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1385:8: error: ‘generic_y0’ is not a class template
>  1385 | struct generic_y0<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1385:28: error: redeclared with 1 template parameter
>  1385 | struct generic_y0<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1293:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_y0’ used 2 template parameters
>  1293 | struct generic_y0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_y0_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1481:12: error: ‘generic_y0’ was not declared in this scope; did you mean ‘Eigen::internal::generic_y0’?
>  1481 |     return generic_y0<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_y0
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1293:8: note: ‘Eigen::internal::generic_y0’ declared here
>  1293 | struct generic_y0 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1481:24: error: expected primary-expression before ‘>’ token
>  1481 |     return generic_y0<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1481:27: error: ‘::run’ has not been declared
>  1481 |     return generic_y0<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1490:54: error: expected nested-name-specifier before ‘unpacket_traits’
>  1490 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1490:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1501:8: error: ‘generic_j1’ is not a class template
>  1501 | struct generic_j1<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1501:27: error: redeclared with 1 template parameter
>  1501 | struct generic_j1<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1491:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_j1’ used 2 template parameters
>  1491 | struct generic_j1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1581:8: error: ‘generic_j1’ is not a class template
>  1581 | struct generic_j1<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1581:28: error: redeclared with 1 template parameter
>  1581 | struct generic_j1<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1491:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_j1’ used 2 template parameters
>  1491 | struct generic_j1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_j1_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1672:12: error: ‘generic_j1’ was not declared in this scope; did you mean ‘Eigen::internal::generic_j1’?
>  1672 |     return generic_j1<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_j1
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1491:8: note: ‘Eigen::internal::generic_j1’ declared here
>  1491 | struct generic_j1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1672:24: error: expected primary-expression before ‘>’ token
>  1672 |     return generic_j1<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1672:27: error: ‘::run’ has not been declared
>  1672 |     return generic_j1<T>::run(x);
>       |                           ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1681:54: error: expected nested-name-specifier before ‘unpacket_traits’
>  1681 | template <typename T, typename ScalarType = typename unpacket_traits<T>::type>
>       |                                                      ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1681:54: error: expected ‘>’ before ‘unpacket_traits’
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1692:8: error: ‘generic_y1’ is not a class template
>  1692 | struct generic_y1<T, float> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1692:27: error: redeclared with 1 template parameter
>  1692 | struct generic_y1<T, float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1682:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_y1’ used 2 template parameters
>  1682 | struct generic_y1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1779:8: error: ‘generic_y1’ is not a class template
>  1779 | struct generic_y1<T, double> {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1779:28: error: redeclared with 1 template parameter
>  1779 | struct generic_y1<T, double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1682:8: note: previous declaration ‘template<class T, class ScalarType> struct Eigen::internal::generic_y1’ used 2 template parameters
>  1682 | struct generic_y1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h: In static member function ‘static T Eigen::internal::bessel_y1_impl<T>::run(T)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1875:12: error: ‘generic_y1’ was not declared in this scope; did you mean ‘Eigen::internal::generic_y1’?
>  1875 |     return generic_y1<T>::run(x);
>       |            ^~~~~~~~~~
>       |            Eigen::internal::generic_y1
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1682:8: note: ‘Eigen::internal::generic_y1’ declared here
>  1682 | struct generic_y1 {
>       |        ^~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1875:24: error: expected primary-expression before ‘>’ token
>  1875 |     return generic_y1<T>::run(x);
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h:1875:27: error: ‘::run’ has not been declared
>  1875 |     return generic_y1<T>::run(x);
>       |                           ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:64,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:16:89: error: ‘bessel_i0’ is not a template function
>    16 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i0(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:20:90: error: ‘bessel_i0e’ is not a template function
>    20 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i0e(const Eigen::bfloat16& x) {
>       |                                                                                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:24:89: error: ‘bessel_i1’ is not a template function
>    24 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i1(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:28:90: error: ‘bessel_i1e’ is not a template function
>    28 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i1e(const Eigen::bfloat16& x) {
>       |                                                                                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:32:89: error: ‘bessel_j0’ is not a template function
>    32 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_j0(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:36:89: error: ‘bessel_j1’ is not a template function
>    36 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_j1(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:40:89: error: ‘bessel_y0’ is not a template function
>    40 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_y0(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:44:89: error: ‘bessel_y1’ is not a template function
>    44 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_y1(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:48:89: error: ‘bessel_k0’ is not a template function
>    48 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k0(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:52:90: error: ‘bessel_k0e’ is not a template function
>    52 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k0e(const Eigen::bfloat16& x) {
>       |                                                                                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:56:89: error: ‘bessel_k1’ is not a template function
>    56 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k1(const Eigen::bfloat16& x) {
>       |                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h:60:90: error: ‘bessel_k1e’ is not a template function
>    60 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k1e(const Eigen::bfloat16& x) {
>       |                                                                                          ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:65,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:16:81: error: ‘bessel_i0’ is not a template function
>    16 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i0(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:20:82: error: ‘bessel_i0e’ is not a template function
>    20 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i0e(const Eigen::half& x) {
>       |                                                                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:24:81: error: ‘bessel_i1’ is not a template function
>    24 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i1(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:28:82: error: ‘bessel_i1e’ is not a template function
>    28 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i1e(const Eigen::half& x) {
>       |                                                                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:35:81: error: ‘bessel_j1’ is not a template function
>    35 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_j1(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:39:81: error: ‘bessel_y0’ is not a template function
>    39 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_y0(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:43:81: error: ‘bessel_y1’ is not a template function
>    43 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_y1(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:50:82: error: ‘bessel_k0e’ is not a template function
>    50 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k0e(const Eigen::half& x) {
>       |                                                                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:54:81: error: ‘bessel_k1’ is not a template function
>    54 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k1(const Eigen::half& x) {
>       |                                                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h:58:82: error: ‘bessel_k1e’ is not a template function
>    58 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k1e(const Eigen::half& x) {
>       |                                                                                  ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:30:20: error: expected nested-name-specifier before ‘packet_traits’
>    30 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:30:20: error: expected ‘;’ at end of member declaration
>    30 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:30:33: error: expected unqualified-id before ‘<’ token
>    30 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:31:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>    31 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:36:8: error: ‘functor_traits’ is not a class template
>    36 | struct functor_traits<scalar_bessel_i0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:36:23: error: ‘scalar_bessel_i0_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_i0_op’?
>    36 | struct functor_traits<scalar_bessel_i0_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_i0_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:226:34: note: ‘Eigen::internal::scalar_bessel_i0_op’ declared here
>   226 | template<typename Scalar> struct scalar_bessel_i0_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:36:8: error: template argument required for ‘struct functor_traits’
>    36 | struct functor_traits<scalar_bessel_i0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:36:51: error: expected unqualified-id before ‘>’ token
>    36 | struct functor_traits<scalar_bessel_i0_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:58:20: error: expected nested-name-specifier before ‘packet_traits’
>    58 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:58:20: error: expected ‘;’ at end of member declaration
>    58 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:58:33: error: expected unqualified-id before ‘<’ token
>    58 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:59:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>    59 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:64:8: error: ‘functor_traits’ is not a class template
>    64 | struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:64:23: error: ‘scalar_bessel_i0e_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_i0e_op’?
>    64 | struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_i0e_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:227:34: note: ‘Eigen::internal::scalar_bessel_i0e_op’ declared here
>   227 | template<typename Scalar> struct scalar_bessel_i0e_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:64:8: error: template argument required for ‘struct functor_traits’
>    64 | struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:64:52: error: expected unqualified-id before ‘>’ token
>    64 | struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
>       |                                                    ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:85:20: error: expected nested-name-specifier before ‘packet_traits’
>    85 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:85:20: error: expected ‘;’ at end of member declaration
>    85 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:85:33: error: expected unqualified-id before ‘<’ token
>    85 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:86:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>    86 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:91:8: error: ‘functor_traits’ is not a class template
>    91 | struct functor_traits<scalar_bessel_i1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:91:23: error: ‘scalar_bessel_i1_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_i1_op’?
>    91 | struct functor_traits<scalar_bessel_i1_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_i1_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:228:34: note: ‘Eigen::internal::scalar_bessel_i1_op’ declared here
>   228 | template<typename Scalar> struct scalar_bessel_i1_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:91:8: error: template argument required for ‘struct functor_traits’
>    91 | struct functor_traits<scalar_bessel_i1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:91:51: error: expected unqualified-id before ‘>’ token
>    91 | struct functor_traits<scalar_bessel_i1_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:113:20: error: expected nested-name-specifier before ‘packet_traits’
>   113 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:113:20: error: expected ‘;’ at end of member declaration
>   113 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:113:33: error: expected unqualified-id before ‘<’ token
>   113 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:114:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   114 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:119:8: error: ‘functor_traits’ is not a class template
>   119 | struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:119:23: error: ‘scalar_bessel_i1e_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_i1e_op’?
>   119 | struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_i1e_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:229:34: note: ‘Eigen::internal::scalar_bessel_i1e_op’ declared here
>   229 | template<typename Scalar> struct scalar_bessel_i1e_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:119:8: error: template argument required for ‘struct functor_traits’
>   119 | struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:119:52: error: expected unqualified-id before ‘>’ token
>   119 | struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
>       |                                                    ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:140:20: error: expected nested-name-specifier before ‘packet_traits’
>   140 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:140:20: error: expected ‘;’ at end of member declaration
>   140 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:140:33: error: expected unqualified-id before ‘<’ token
>   140 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:141:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   141 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:146:8: error: ‘functor_traits’ is not a class template
>   146 | struct functor_traits<scalar_bessel_j0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:146:23: error: ‘scalar_bessel_j0_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_j0_op’?
>   146 | struct functor_traits<scalar_bessel_j0_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_j0_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:230:34: note: ‘Eigen::internal::scalar_bessel_j0_op’ declared here
>   230 | template<typename Scalar> struct scalar_bessel_j0_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:146:8: error: template argument required for ‘struct functor_traits’
>   146 | struct functor_traits<scalar_bessel_j0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:146:51: error: expected unqualified-id before ‘>’ token
>   146 | struct functor_traits<scalar_bessel_j0_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:168:20: error: expected nested-name-specifier before ‘packet_traits’
>   168 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:168:20: error: expected ‘;’ at end of member declaration
>   168 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:168:33: error: expected unqualified-id before ‘<’ token
>   168 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:169:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   169 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:174:8: error: ‘functor_traits’ is not a class template
>   174 | struct functor_traits<scalar_bessel_y0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:174:23: error: ‘scalar_bessel_y0_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_y0_op’?
>   174 | struct functor_traits<scalar_bessel_y0_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_y0_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:231:34: note: ‘Eigen::internal::scalar_bessel_y0_op’ declared here
>   231 | template<typename Scalar> struct scalar_bessel_y0_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:174:8: error: template argument required for ‘struct functor_traits’
>   174 | struct functor_traits<scalar_bessel_y0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:174:51: error: expected unqualified-id before ‘>’ token
>   174 | struct functor_traits<scalar_bessel_y0_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:196:20: error: expected nested-name-specifier before ‘packet_traits’
>   196 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:196:20: error: expected ‘;’ at end of member declaration
>   196 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:196:33: error: expected unqualified-id before ‘<’ token
>   196 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:197:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   197 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:202:8: error: ‘functor_traits’ is not a class template
>   202 | struct functor_traits<scalar_bessel_j1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:202:23: error: ‘scalar_bessel_j1_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_j1_op’?
>   202 | struct functor_traits<scalar_bessel_j1_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_j1_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:232:34: note: ‘Eigen::internal::scalar_bessel_j1_op’ declared here
>   232 | template<typename Scalar> struct scalar_bessel_j1_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:202:8: error: template argument required for ‘struct functor_traits’
>   202 | struct functor_traits<scalar_bessel_j1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:202:51: error: expected unqualified-id before ‘>’ token
>   202 | struct functor_traits<scalar_bessel_j1_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:224:20: error: expected nested-name-specifier before ‘packet_traits’
>   224 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:224:20: error: expected ‘;’ at end of member declaration
>   224 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:224:33: error: expected unqualified-id before ‘<’ token
>   224 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:225:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   225 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:230:8: error: ‘functor_traits’ is not a class template
>   230 | struct functor_traits<scalar_bessel_y1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:230:23: error: ‘scalar_bessel_y1_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_y1_op’?
>   230 | struct functor_traits<scalar_bessel_y1_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_y1_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:233:34: note: ‘Eigen::internal::scalar_bessel_y1_op’ declared here
>   233 | template<typename Scalar> struct scalar_bessel_y1_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:230:8: error: template argument required for ‘struct functor_traits’
>   230 | struct functor_traits<scalar_bessel_y1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:230:51: error: expected unqualified-id before ‘>’ token
>   230 | struct functor_traits<scalar_bessel_y1_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:252:20: error: expected nested-name-specifier before ‘packet_traits’
>   252 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:252:20: error: expected ‘;’ at end of member declaration
>   252 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:252:33: error: expected unqualified-id before ‘<’ token
>   252 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:253:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   253 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:258:8: error: ‘functor_traits’ is not a class template
>   258 | struct functor_traits<scalar_bessel_k0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:258:23: error: ‘scalar_bessel_k0_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_k0_op’?
>   258 | struct functor_traits<scalar_bessel_k0_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_k0_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:234:34: note: ‘Eigen::internal::scalar_bessel_k0_op’ declared here
>   234 | template<typename Scalar> struct scalar_bessel_k0_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:258:8: error: template argument required for ‘struct functor_traits’
>   258 | struct functor_traits<scalar_bessel_k0_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:258:51: error: expected unqualified-id before ‘>’ token
>   258 | struct functor_traits<scalar_bessel_k0_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:280:20: error: expected nested-name-specifier before ‘packet_traits’
>   280 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:280:20: error: expected ‘;’ at end of member declaration
>   280 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:280:33: error: expected unqualified-id before ‘<’ token
>   280 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:281:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   281 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:286:8: error: ‘functor_traits’ is not a class template
>   286 | struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:286:23: error: ‘scalar_bessel_k0e_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_k0e_op’?
>   286 | struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_k0e_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:235:34: note: ‘Eigen::internal::scalar_bessel_k0e_op’ declared here
>   235 | template<typename Scalar> struct scalar_bessel_k0e_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:286:8: error: template argument required for ‘struct functor_traits’
>   286 | struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:286:52: error: expected unqualified-id before ‘>’ token
>   286 | struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
>       |                                                    ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:308:20: error: expected nested-name-specifier before ‘packet_traits’
>   308 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:308:20: error: expected ‘;’ at end of member declaration
>   308 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:308:33: error: expected unqualified-id before ‘<’ token
>   308 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:309:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   309 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:314:8: error: ‘functor_traits’ is not a class template
>   314 | struct functor_traits<scalar_bessel_k1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:314:23: error: ‘scalar_bessel_k1_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_k1_op’?
>   314 | struct functor_traits<scalar_bessel_k1_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_k1_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:236:34: note: ‘Eigen::internal::scalar_bessel_k1_op’ declared here
>   236 | template<typename Scalar> struct scalar_bessel_k1_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:314:8: error: template argument required for ‘struct functor_traits’
>   314 | struct functor_traits<scalar_bessel_k1_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:314:51: error: expected unqualified-id before ‘>’ token
>   314 | struct functor_traits<scalar_bessel_k1_op<Scalar> > {
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:336:20: error: expected nested-name-specifier before ‘packet_traits’
>   336 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:336:20: error: expected ‘;’ at end of member declaration
>   336 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:336:33: error: expected unqualified-id before ‘<’ token
>   336 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:337:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   337 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x) const {
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:342:8: error: ‘functor_traits’ is not a class template
>   342 | struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:342:23: error: ‘scalar_bessel_k1e_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_bessel_k1e_op’?
>   342 | struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_bessel_k1e_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:237:34: note: ‘Eigen::internal::scalar_bessel_k1e_op’ declared here
>   237 | template<typename Scalar> struct scalar_bessel_k1e_op;
>       |                                  ^~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:67,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:342:8: error: template argument required for ‘struct functor_traits’
>   342 | struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h:342:52: error: expected unqualified-id before ‘>’ token
>   342 | struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
>       |                                                    ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:73:8: error: ‘lgamma_impl’ is not a class template
>    73 | struct lgamma_impl<float> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:73:25: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::lgamma_impl’
>    73 | struct lgamma_impl<float> {
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:88:8: error: ‘lgamma_impl’ is not a class template
>    88 | struct lgamma_impl<double> {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:88:26: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::lgamma_impl’
>    88 | struct lgamma_impl<double> {
>       |                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:139:8: error: ‘digamma_impl_maybe_poly’ is not a class template
>   139 | struct digamma_impl_maybe_poly<float> {
>       |        ^~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:139:37: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::digamma_impl_maybe_poly’
>   139 | struct digamma_impl_maybe_poly<float> {
>       |                                     ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:158:8: error: ‘digamma_impl_maybe_poly’ is not a class template
>   158 | struct digamma_impl_maybe_poly<double> {
>       |        ^~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:158:38: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::digamma_impl_maybe_poly’
>   158 | struct digamma_impl_maybe_poly<double> {
>       |                                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::digamma_impl<Scalar>::run(Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:284:9: error: ‘digamma_impl_maybe_poly’ was not declared in this scope; did you mean ‘Eigen::internal::digamma_impl_maybe_poly’?
>   284 |     y = digamma_impl_maybe_poly<Scalar>::run(s);
>       |         ^~~~~~~~~~~~~~~~~~~~~~~
>       |         Eigen::internal::digamma_impl_maybe_poly
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:128:8: note: ‘Eigen::internal::digamma_impl_maybe_poly’ declared here
>   128 | struct digamma_impl_maybe_poly {
>       |        ^~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:284:39: error: expected primary-expression before ‘>’ token
>   284 |     y = digamma_impl_maybe_poly<Scalar>::run(s);
>       |                                       ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:284:42: error: ‘::run’ has not been declared
>   284 |     y = digamma_impl_maybe_poly<Scalar>::run(s);
>       |                                          ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘T Eigen::generic_fast_erf_float(const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:307:20: error: ‘pset1’ was not declared in this scope; did you mean ‘Eigen::internal::pset1’?
>   307 |   const T plus_4 = pset1<T>(4.f);
>       |                    ^~~~~
>       |                    Eigen::internal::pset1
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:615:1: note: ‘Eigen::internal::pset1’ declared here
>   615 | pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
>       | ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:307:27: error: expected primary-expression before ‘>’ token
>   307 |   const T plus_4 = pset1<T>(4.f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:308:28: error: expected primary-expression before ‘>’ token
>   308 |   const T minus_4 = pset1<T>(-4.f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:311:28: error: expected primary-expression before ‘>’ token
>   311 |   const T alpha_1 = pset1<T>(-1.60960333262415e-02f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:312:28: error: expected primary-expression before ‘>’ token
>   312 |   const T alpha_3 = pset1<T>(-2.95459980854025e-03f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:313:28: error: expected primary-expression before ‘>’ token
>   313 |   const T alpha_5 = pset1<T>(-7.34990630326855e-04f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:314:28: error: expected primary-expression before ‘>’ token
>   314 |   const T alpha_7 = pset1<T>(-5.69250639462346e-05f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:315:28: error: expected primary-expression before ‘>’ token
>   315 |   const T alpha_9 = pset1<T>(-2.10102402082508e-06f);
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:316:29: error: expected primary-expression before ‘>’ token
>   316 |   const T alpha_11 = pset1<T>(2.77068142495902e-08f);
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:317:29: error: expected primary-expression before ‘>’ token
>   317 |   const T alpha_13 = pset1<T>(-2.72614225801306e-10f);
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:320:27: error: expected primary-expression before ‘>’ token
>   320 |   const T beta_0 = pset1<T>(-1.42647390514189e-02f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:321:27: error: expected primary-expression before ‘>’ token
>   321 |   const T beta_2 = pset1<T>(-7.37332916720468e-03f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:322:27: error: expected primary-expression before ‘>’ token
>   322 |   const T beta_4 = pset1<T>(-1.68282697438203e-03f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:323:27: error: expected primary-expression before ‘>’ token
>   323 |   const T beta_6 = pset1<T>(-2.13374055278905e-04f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:324:27: error: expected primary-expression before ‘>’ token
>   324 |   const T beta_8 = pset1<T>(-1.45660718464996e-05f);
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:363:8: error: ‘erf_impl’ is not a class template
>   363 | struct erf_impl<float> {
>       |        ^~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:363:22: error: template specifiers not specified in declaration of ‘template<class T> struct Eigen::internal::erf_impl’
>   363 | struct erf_impl<float> {
>       |                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:375:8: error: ‘erf_impl’ is not a class template
>   375 | struct erf_impl<double> {
>       |        ^~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:375:23: error: template specifiers not specified in declaration of ‘template<class T> struct Eigen::internal::erf_impl’
>   375 | struct erf_impl<double> {
>       |                       ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:408:8: error: ‘erfc_impl’ is not a class template
>   408 | struct erfc_impl<float> {
>       |        ^~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:408:23: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::erfc_impl’
>   408 | struct erfc_impl<float> {
>       |                       ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:420:8: error: ‘erfc_impl’ is not a class template
>   420 | struct erfc_impl<double> {
>       |        ^~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:420:24: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::erfc_impl’
>   420 | struct erfc_impl<double> {
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘T Eigen::flipsign(const T&, const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:493:20: error: expected nested-name-specifier before ‘unpacket_traits’
>   493 |   typedef typename unpacket_traits<T>::type Scalar;
>       |                    ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:493:35: error: expected initializer before ‘<’ token
>   493 |   typedef typename unpacket_traits<T>::type Scalar;
>       |                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:494:23: error: ‘pset1’ was not declared in this scope; did you mean ‘Eigen::internal::pset1’?
>   494 |   const T sign_mask = pset1<T>(Scalar(-0.0));
>       |                       ^~~~~
>       |                       Eigen::internal::pset1
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:615:1: note: ‘Eigen::internal::pset1’ declared here
>   615 | pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
>       | ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:494:30: error: expected primary-expression before ‘>’ token
>   494 |   const T sign_mask = pset1<T>(Scalar(-0.0));
>       |                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:494:32: error: there are no arguments to ‘Scalar’ that depend on a template parameter, so a declaration of ‘Scalar’ must be available [-fpermissive]
>   494 |   const T sign_mask = pset1<T>(Scalar(-0.0));
>       |                                ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:494:32: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:495:16: error: ‘pand’ was not declared in this scope; did you mean ‘Eigen::internal::pand’?
>   495 |   T sign_bit = pand<T>(should_flipsign, sign_mask);
>       |                ^~~~
>       |                Eigen::internal::pand
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:407:1: note: ‘Eigen::internal::pand’ declared here
>   407 | pand(const Packet& a, const Packet& b) {
>       | ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:495:22: error: expected primary-expression before ‘>’ token
>   495 |   T sign_bit = pand<T>(should_flipsign, sign_mask);
>       |                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:496:10: error: ‘pxor’ was not declared in this scope; did you mean ‘Eigen::internal::pxor’?
>   496 |   return pxor<T>(sign_bit, x);
>       |          ^~~~
>       |          Eigen::internal::pxor
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:419:1: note: ‘Eigen::internal::pxor’ declared here
>   419 | pxor(const Packet& a, const Packet& b) {
>       | ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:496:16: error: expected primary-expression before ‘>’ token
>   496 |   return pxor<T>(sign_bit, x);
>       |                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:500:54: error: expected initializer before ‘<’ token
>   500 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double flipsign<double>(
>       |                                                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:506:53: error: expected initializer before ‘<’ token
>   506 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE float flipsign<float>(
>       |                                                     ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘T Eigen::generic_ndtri_gt_exp_neg_two(const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:535:21: error: ‘pset1’ was not declared in this scope; did you mean ‘Eigen::internal::pset1’?
>   535 |   const T sqrt2pi = pset1<T>(ScalarType(2.50662827463100050242e0));
>       |                     ^~~~~
>       |                     Eigen::internal::pset1
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:615:1: note: ‘Eigen::internal::pset1’ declared here
>   615 | pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
>       | ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:535:28: error: expected primary-expression before ‘>’ token
>   535 |   const T sqrt2pi = pset1<T>(ScalarType(2.50662827463100050242e0));
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:536:25: error: expected primary-expression before ‘>’ token
>   536 |   const T half = pset1<T>(ScalarType(0.5));
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘T Eigen::generic_ndtri_lt_exp_neg_two(const T&, const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:601:19: error: ‘pset1’ was not declared in this scope; did you mean ‘Eigen::internal::pset1’?
>   601 |   const T eight = pset1<T>(ScalarType(8.0));
>       |                   ^~~~~
>       |                   Eigen::internal::pset1
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:615:1: note: ‘Eigen::internal::pset1’ declared here
>   615 | pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
>       | ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:601:26: error: expected primary-expression before ‘>’ token
>   601 |   const T eight = pset1<T>(ScalarType(8.0));
>       |                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:602:24: error: expected primary-expression before ‘>’ token
>   602 |   const T one = pset1<T>(ScalarType(1));
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:603:28: error: expected primary-expression before ‘>’ token
>   603 |   const T neg_two = pset1<T>(ScalarType(-2));
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘T Eigen::generic_ndtri(const T&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:622:20: error: ‘pset1’ was not declared in this scope; did you mean ‘Eigen::internal::pset1’?
>   622 |   const T maxnum = pset1<T>(NumTraits<ScalarType>::infinity());
>       |                    ^~~~~
>       |                    Eigen::internal::pset1
> In file included from /usr/include/eigen3/Eigen/Core:172,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:615:1: note: ‘Eigen::internal::pset1’ declared here
>   615 | pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
>       | ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:622:27: error: expected primary-expression before ‘>’ token
>   622 |   const T maxnum = pset1<T>(NumTraits<ScalarType>::infinity());
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:623:31: error: expected primary-expression before ‘>’ token
>   623 |   const T neg_maxnum = pset1<T>(-NumTraits<ScalarType>::infinity());
>       |                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:625:25: error: expected primary-expression before ‘>’ token
>   625 |   const T zero = pset1<T>(ScalarType(0));
>       |                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:626:24: error: expected primary-expression before ‘>’ token
>   626 |   const T one = pset1<T>(ScalarType(1));
>       |                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:628:32: error: expected primary-expression before ‘>’ token
>   628 |   const T exp_neg_two = pset1<T>(ScalarType(0.13533528323661269189));
>       |                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:636:7: error: ‘generic_ndtri_gt_exp_neg_two’ was not declared in this scope; did you mean ‘Eigen::generic_ndtri_gt_exp_neg_two’?
>   636 |       generic_ndtri_gt_exp_neg_two<T, ScalarType>(b),
>       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |       Eigen::generic_ndtri_gt_exp_neg_two
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:516:41: note: ‘Eigen::generic_ndtri_gt_exp_neg_two’ declared here
>   516 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T generic_ndtri_gt_exp_neg_two(const T& b) {
>       |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:636:37: error: expected primary-expression before ‘,’ token
>   636 |       generic_ndtri_gt_exp_neg_two<T, ScalarType>(b),
>       |                                     ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:636:49: error: expected primary-expression before ‘>’ token
>   636 |       generic_ndtri_gt_exp_neg_two<T, ScalarType>(b),
>       |                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:637:7: error: ‘generic_ndtri_lt_exp_neg_two’ was not declared in this scope; did you mean ‘Eigen::generic_ndtri_lt_exp_neg_two’?
>   637 |       generic_ndtri_lt_exp_neg_two<T, ScalarType>(b, should_flipsign));
>       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |       Eigen::generic_ndtri_lt_exp_neg_two
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:549:41: note: ‘Eigen::generic_ndtri_lt_exp_neg_two’ declared here
>   549 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T generic_ndtri_lt_exp_neg_two(
>       |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:637:37: error: expected primary-expression before ‘,’ token
>   637 |       generic_ndtri_lt_exp_neg_two<T, ScalarType>(b, should_flipsign));
>       |                                     ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:637:49: error: expected primary-expression before ‘>’ token
>   637 |       generic_ndtri_lt_exp_neg_two<T, ScalarType>(b, should_flipsign));
>       |                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::ndtri_impl<Scalar>::run(Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:667:12: error: ‘generic_ndtri’ was not declared in this scope; did you mean ‘Eigen::generic_ndtri’?
>   667 |     return generic_ndtri<Scalar, Scalar>(x);
>       |            ^~~~~~~~~~~~~
>       |            Eigen::generic_ndtri
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:621:3: note: ‘Eigen::generic_ndtri’ declared here
>   621 | T generic_ndtri(const T& a) {
>       |   ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:667:32: error: expected primary-expression before ‘,’ token
>   667 |     return generic_ndtri<Scalar, Scalar>(x);
>       |                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:667:40: error: expected primary-expression before ‘>’ token
>   667 |     return generic_ndtri<Scalar, Scalar>(x);
>       |                                        ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:695:8: error: ‘cephes_helper’ is not a class template
>   695 | struct cephes_helper<float> {
>       |        ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:695:27: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::cephes_helper’
>   695 | struct cephes_helper<float> {
>       |                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:713:8: error: ‘cephes_helper’ is not a class template
>   713 | struct cephes_helper<double> {
>       |        ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:713:28: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::cephes_helper’
>   713 | struct cephes_helper<double> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘Scalar Eigen::main_igamma_term(Scalar, Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:735:45: error: ‘lgamma_impl’ was not declared in this scope; did you mean ‘Eigen::internal::lgamma_impl’?
>   735 |     Scalar logax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
>       |                                             ^~~~~~~~~~~
>       |                                             Eigen::internal::lgamma_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:45:8: note: ‘Eigen::internal::lgamma_impl’ declared here
>    45 | struct lgamma_impl {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:735:63: error: expected primary-expression before ‘>’ token
>   735 |     Scalar logax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
>       |                                                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:735:66: error: ‘::run’ has not been declared
>   735 |     Scalar logax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
>       |                                                                  ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:744:28: error: ‘IgammaComputationMode’ has not been declared
>   744 | template <typename Scalar, IgammaComputationMode mode>
>       |                            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In function ‘int Eigen::igamma_num_iterations()’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:749:7: error: ‘mode’ was not declared in this scope; did you mean ‘modf’?
>   749 |   if (mode == VALUE) {
>       |       ^~~~
>       |       modf
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:749:15: error: ‘VALUE’ was not declared in this scope; did you mean ‘Eigen::internal::VALUE’?
>   749 |   if (mode == VALUE) {
>       |               ^~~~~
>       |               Eigen::internal::VALUE
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:729:30: note: ‘Eigen::internal::VALUE’ declared here
>   729 | enum IgammaComputationMode { VALUE, DERIVATIVE, SAMPLE_DERIVATIVE };
>       |                              ^~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:762:28: error: ‘IgammaComputationMode’ has not been declared
>   762 | template <typename Scalar, IgammaComputationMode mode>
>       |                            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:880:28: error: ‘IgammaComputationMode’ has not been declared
>   880 | template <typename Scalar, IgammaComputationMode mode>
>       |                            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::igammac_impl<Scalar>::run(Scalar, Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1037:21: error: ‘igamma_series_impl’ was not declared in this scope; did you mean ‘Eigen::internal::igamma_series_impl’?
>  1037 |       return (one - igamma_series_impl<Scalar, VALUE>::run(a, x));
>       |                     ^~~~~~~~~~~~~~~~~~
>       |                     Eigen::internal::igamma_series_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:881:8: note: ‘Eigen::internal::igamma_series_impl’ declared here
>   881 | struct igamma_series_impl {
>       |        ^~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1037:46: error: expected primary-expression before ‘,’ token
>  1037 |       return (one - igamma_series_impl<Scalar, VALUE>::run(a, x));
>       |                                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1037:48: error: ‘VALUE’ was not declared in this scope; did you mean ‘Eigen::internal::VALUE’?
>  1037 |       return (one - igamma_series_impl<Scalar, VALUE>::run(a, x));
>       |                                                ^~~~~
>       |                                                Eigen::internal::VALUE
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:729:30: note: ‘Eigen::internal::VALUE’ declared here
>   729 | enum IgammaComputationMode { VALUE, DERIVATIVE, SAMPLE_DERIVATIVE };
>       |                              ^~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1037:56: error: ‘::run’ has not been declared
>  1037 |       return (one - igamma_series_impl<Scalar, VALUE>::run(a, x));
>       |                                                        ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1040:12: error: ‘igammac_cf_impl’ was not declared in this scope; did you mean ‘Eigen::internal::igammac_cf_impl’?
>  1040 |     return igammac_cf_impl<Scalar, VALUE>::run(a, x);
>       |            ^~~~~~~~~~~~~~~
>       |            Eigen::internal::igammac_cf_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:763:8: note: ‘Eigen::internal::igammac_cf_impl’ declared here
>   763 | struct igammac_cf_impl {
>       |        ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1040:34: error: expected primary-expression before ‘,’ token
>  1040 |     return igammac_cf_impl<Scalar, VALUE>::run(a, x);
>       |                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1040:36: error: ‘VALUE’ was not declared in this scope; did you mean ‘Eigen::internal::VALUE’?
>  1040 |     return igammac_cf_impl<Scalar, VALUE>::run(a, x);
>       |                                    ^~~~~
>       |                                    Eigen::internal::VALUE
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:729:30: note: ‘Eigen::internal::VALUE’ declared here
>   729 | enum IgammaComputationMode { VALUE, DERIVATIVE, SAMPLE_DERIVATIVE };
>       |                              ^~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1040:44: error: ‘::run’ has not been declared
>  1040 |     return igammac_cf_impl<Scalar, VALUE>::run(a, x);
>       |                                            ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1064:28: error: ‘IgammaComputationMode’ has not been declared
>  1064 | template <typename Scalar, IgammaComputationMode mode>
>       |                            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1111:41: error: expected template-name before ‘<’ token
>  1111 | struct igamma_impl : igamma_generic_impl<Scalar, VALUE> {
>       |                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1111:41: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1182:43: error: expected template-name before ‘<’ token
>  1182 | struct igamma_der_a_retval : igamma_retval<Scalar> {};
>       |                                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1182:43: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1185:47: error: expected template-name before ‘<’ token
>  1185 | struct igamma_der_a_impl : igamma_generic_impl<Scalar, DERIVATIVE> {
>       |                                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1185:47: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1203:53: error: expected template-name before ‘<’ token
>  1203 | struct gamma_sample_der_alpha_retval : igamma_retval<Scalar> {};
>       |                                                     ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1203:53: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1207:26: error: expected template-name before ‘<’ token
>  1207 |     : igamma_generic_impl<Scalar, SAMPLE_DERIVATIVE> {
>       |                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1207:26: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1267:8: error: ‘zeta_impl_series’ is not a class template
>  1267 | struct zeta_impl_series<float> {
>       |        ^~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1267:30: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::zeta_impl_series’
>  1267 | struct zeta_impl_series<float> {
>       |                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1287:8: error: ‘zeta_impl_series’ is not a class template
>  1287 | struct zeta_impl_series<double> {
>       |        ^~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1287:31: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::zeta_impl_series’
>  1287 | struct zeta_impl_series<double> {
>       |                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::zeta_impl<Scalar>::run(Scalar, Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1391:31: error: ‘cephes_helper’ was not declared in this scope; did you mean ‘Eigen::internal::cephes_helper’?
>  1391 |         const Scalar machep = cephes_helper<Scalar>::machep();
>       |                               ^~~~~~~~~~~~~
>       |                               Eigen::internal::cephes_helper
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:685:8: note: ‘Eigen::internal::cephes_helper’ declared here
>   685 | struct cephes_helper {
>       |        ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1391:51: error: expected primary-expression before ‘>’ token
>  1391 |         const Scalar machep = cephes_helper<Scalar>::machep();
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1391:54: error: ‘::machep’ has not been declared
>  1391 |         const Scalar machep = cephes_helper<Scalar>::machep();
>       |                                                      ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1428:13: error: ‘zeta_impl_series’ was not declared in this scope; did you mean ‘Eigen::internal::zeta_impl_series’?
>  1428 |         if (zeta_impl_series<Scalar>::run(a, b, s, x, machep)) {
>       |             ^~~~~~~~~~~~~~~~
>       |             Eigen::internal::zeta_impl_series
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1257:8: note: ‘Eigen::internal::zeta_impl_series’ declared here
>  1257 | struct zeta_impl_series {
>       |        ^~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1428:36: error: expected primary-expression before ‘>’ token
>  1428 |         if (zeta_impl_series<Scalar>::run(a, b, s, x, machep)) {
>       |                                    ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1428:39: error: ‘::run’ has not been declared
>  1428 |         if (zeta_impl_series<Scalar>::run(a, b, s, x, machep)) {
>       |                                       ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::polygamma_impl<Scalar>::run(Scalar, Scalar)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1493:20: error: ‘digamma_impl’ was not declared in this scope; did you mean ‘Eigen::internal::digamma_impl’?
>  1493 |             return digamma_impl<Scalar>::run(x);
>       |                    ^~~~~~~~~~~~
>       |                    Eigen::internal::digamma_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:181:8: note: ‘Eigen::internal::digamma_impl’ declared here
>   181 | struct digamma_impl {
>       |        ^~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1493:39: error: expected primary-expression before ‘>’ token
>  1493 |             return digamma_impl<Scalar>::run(x);
>       |                                       ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1493:42: error: ‘::run’ has not been declared
>  1493 |             return digamma_impl<Scalar>::run(x);
>       |                                          ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1497:44: error: ‘lgamma_impl’ was not declared in this scope; did you mean ‘Eigen::internal::lgamma_impl’?
>  1497 |             Scalar factorial = numext::exp(lgamma_impl<Scalar>::run(nplus));
>       |                                            ^~~~~~~~~~~
>       |                                            Eigen::internal::lgamma_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:45:8: note: ‘Eigen::internal::lgamma_impl’ declared here
>    45 | struct lgamma_impl {
>       |        ^~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1497:62: error: expected primary-expression before ‘>’ token
>  1497 |             Scalar factorial = numext::exp(lgamma_impl<Scalar>::run(nplus));
>       |                                                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1497:65: error: ‘::run’ has not been declared
>  1497 |             Scalar factorial = numext::exp(lgamma_impl<Scalar>::run(nplus));
>       |                                                                 ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1498:59: error: ‘zeta_impl’ was not declared in this scope; did you mean ‘Eigen::internal::zeta_impl’?
>  1498 |             return numext::pow(-one, nplus) * factorial * zeta_impl<Scalar>::run(nplus, x);
>       |                                                           ^~~~~~~~~
>       |                                                           Eigen::internal::zeta_impl
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1307:8: note: ‘Eigen::internal::zeta_impl’ declared here
>  1307 | struct zeta_impl {
>       |        ^~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1498:75: error: expected primary-expression before ‘>’ token
>  1498 |             return numext::pow(-one, nplus) * factorial * zeta_impl<Scalar>::run(nplus, x);
>       |                                                                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1498:78: error: ‘::run’ has not been declared
>  1498 |             return numext::pow(-one, nplus) * factorial * zeta_impl<Scalar>::run(nplus, x);
>       |                                                                              ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: In static member function ‘static Scalar Eigen::internal::incbeta_cfe<Scalar>::run(Scalar, Scalar, Scalar, bool)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1617:24: error: ‘cephes_helper’ was not declared in this scope; did you mean ‘Eigen::internal::cephes_helper’?
>  1617 |     const Scalar big = cephes_helper<Scalar>::big();
>       |                        ^~~~~~~~~~~~~
>       |                        Eigen::internal::cephes_helper
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:685:8: note: ‘Eigen::internal::cephes_helper’ declared here
>   685 | struct cephes_helper {
>       |        ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1617:44: error: expected primary-expression before ‘>’ token
>  1617 |     const Scalar big = cephes_helper<Scalar>::big();
>       |                                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1617:47: error: ‘::big’ has not been declared
>  1617 |     const Scalar big = cephes_helper<Scalar>::big();
>       |                                               ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1618:47: error: expected primary-expression before ‘>’ token
>  1618 |     const Scalar machep = cephes_helper<Scalar>::machep();
>       |                                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1618:50: error: ‘::machep’ has not been declared
>  1618 |     const Scalar machep = cephes_helper<Scalar>::machep();
>       |                                                  ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1619:47: error: expected primary-expression before ‘>’ token
>  1619 |     const Scalar biginv = cephes_helper<Scalar>::biginv();
>       |                                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1619:50: error: ‘::biginv’ has not been declared
>  1619 |     const Scalar biginv = cephes_helper<Scalar>::biginv();
>       |                                                  ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1722:8: error: ‘betainc_helper’ is not a class template
>  1722 | struct betainc_helper<float> {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1722:28: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::betainc_helper’
>  1722 | struct betainc_helper<float> {
>       |                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1799:8: error: ‘betainc_impl’ is not a class template
>  1799 | struct betainc_impl<float> {
>       |        ^~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1799:26: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::betainc_impl’
>  1799 | struct betainc_impl<float> {
>       |                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1828:8: error: ‘betainc_helper’ is not a class template
>  1828 | struct betainc_helper<double> {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1828:29: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::betainc_helper’
>  1828 | struct betainc_helper<double> {
>       |                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1868:8: error: ‘betainc_impl’ is not a class template
>  1868 | struct betainc_impl<double> {
>       |        ^~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1868:27: error: template specifiers not specified in declaration of ‘template<class Scalar> struct Eigen::internal::betainc_impl’
>  1868 | struct betainc_impl<double> {
>       |                           ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:15:97: error: specialization of ‘template<class Scalar> typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&)’ in different namespace [-fpermissive]
>    15 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 lgamma(const Eigen::bfloat16& a) {
>       |                                                                                                 ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1972:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&)’
>  1972 |     lgamma(const Scalar& x) {
>       |     ^~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: In function ‘typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&) [with Scalar = Eigen::bfloat16; typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::bfloat16; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::bfloat16]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:16:41: error: ‘lgamma’ is not a member of ‘Eigen::numext’; did you mean ‘igamma’?
>    16 |   return Eigen::bfloat16(Eigen::numext::lgamma(static_cast<float>(a)));
>       |                                         ^~~~~~
>       |                                         igamma
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:18:98: error: specialization of ‘template<class Scalar> typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&)’ in different namespace [-fpermissive]
>    18 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 digamma(const Eigen::bfloat16& a) {
>       |                                                                                                  ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1978:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&)’
>  1978 |     digamma(const Scalar& x) {
>       |     ^~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: In function ‘typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&) [with Scalar = Eigen::bfloat16; typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::bfloat16; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::bfloat16]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:19:41: error: ‘digamma’ is not a member of ‘Eigen::numext’; did you mean ‘igamma’?
>    19 |   return Eigen::bfloat16(Eigen::numext::digamma(static_cast<float>(a)));
>       |                                         ^~~~~~~
>       |                                         igamma
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:21:121: error: ‘zeta’ is not a template function
>    21 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 zeta(const Eigen::bfloat16& x, const Eigen::bfloat16& q) {
>       |                                                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:24:126: error: ‘polygamma’ is not a template function
>    24 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 polygamma(const Eigen::bfloat16& n, const Eigen::bfloat16& x) {
>       |                                                                                                                              ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:27:94: error: specialization of ‘template<class Scalar> typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&)’ in different namespace [-fpermissive]
>    27 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 erf(const Eigen::bfloat16& a) {
>       |                                                                                              ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1996:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&)’
>  1996 |     erf(const Scalar& x) {
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: In function ‘typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&) [with Scalar = Eigen::bfloat16; typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::bfloat16; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::bfloat16]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:28:41: error: ‘erf’ is not a member of ‘Eigen::numext’
>    28 |   return Eigen::bfloat16(Eigen::numext::erf(static_cast<float>(a)));
>       |                                         ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:28:41: note: suggested alternatives:
> In file included from /usr/include/c++/11/complex:44,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/cmath:1306:3: note:   ‘erf’
>  1306 |   erf(float __x)
>       |   ^~~
> /usr/include/c++/11/cmath:1318:5: note:   ‘std::erf’
>  1318 |     erf(_Tp __x)
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1996:5: note:   ‘Eigen::erf’
>  1996 |     erf(const Scalar& x) {
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:30:95: error: specialization of ‘template<class Scalar> typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&)’ in different namespace [-fpermissive]
>    30 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 erfc(const Eigen::bfloat16& a) {
>       |                                                                                               ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2002:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&)’
>  2002 |     erfc(const Scalar& x) {
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: In function ‘typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&) [with Scalar = Eigen::bfloat16; typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::bfloat16; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::bfloat16]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:31:41: error: ‘erfc’ is not a member of ‘Eigen::numext’
>    31 |   return Eigen::bfloat16(Eigen::numext::erfc(static_cast<float>(a)));
>       |                                         ^~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:31:41: note: suggested alternatives:
> In file included from /usr/include/c++/11/complex:44,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/cmath:1324:3: note:   ‘erfc’
>  1324 |   erfc(float __x)
>       |   ^~~~
> /usr/include/c++/11/cmath:1336:5: note:   ‘std::erfc’
>  1336 |     erfc(_Tp __x)
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2002:5: note:   ‘Eigen::erfc’
>  2002 |     erfc(const Scalar& x) {
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:33:96: error: specialization of ‘template<class Scalar> typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&)’ in different namespace [-fpermissive]
>    33 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 ndtri(const Eigen::bfloat16& a) {
>       |                                                                                                ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2008:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&)’
>  2008 |     ndtri(const Scalar& x) {
>       |     ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: In function ‘typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&) [with Scalar = Eigen::bfloat16; typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::bfloat16; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::bfloat16]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:34:41: error: ‘ndtri’ is not a member of ‘Eigen::numext’; did you mean ‘Eigen::ndtri’?
>    34 |   return Eigen::bfloat16(Eigen::numext::ndtri(static_cast<float>(a)));
>       |                                         ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2008:5: note: ‘Eigen::ndtri’ declared here
>  2008 |     ndtri(const Scalar& x) {
>       |     ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:73,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:36:123: error: ‘igamma’ is not a template function
>    36 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 igamma(const Eigen::bfloat16& a, const Eigen::bfloat16& x) {
>       |                                                                                                                           ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:40:118: error: ‘igamma_der_a’ is not a template function
>    40 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 igamma_der_a(const Eigen::bfloat16& a, const Eigen::bfloat16& x) {
>       |                                                                                                                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:44:137: error: ‘gamma_sample_der_alpha’ is not a template function
>    44 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 gamma_sample_der_alpha(const Eigen::bfloat16& alpha, const Eigen::bfloat16& sample) {
>       |                                                                                                                                         ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:47:124: error: ‘igammac’ is not a template function
>    47 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 igammac(const Eigen::bfloat16& a, const Eigen::bfloat16& x) {
>       |                                                                                                                            ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h:50:150: error: ‘betainc’ is not a template function
>    50 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 betainc(const Eigen::bfloat16& a, const Eigen::bfloat16& b, const Eigen::bfloat16& x) {
>       |                                                                                                                                                      ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:15:89: error: specialization of ‘template<class Scalar> typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&)’ in different namespace [-fpermissive]
>    15 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half lgamma(const Eigen::half& a) {
>       |                                                                                         ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1972:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&)’
>  1972 |     lgamma(const Scalar& x) {
>       |     ^~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: In function ‘typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::lgamma(const Scalar&) [with Scalar = Eigen::half; typename Eigen::internal::lgamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::half; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::half]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:16:37: error: ‘lgamma’ is not a member of ‘Eigen::numext’; did you mean ‘igamma’?
>    16 |   return Eigen::half(Eigen::numext::lgamma(static_cast<float>(a)));
>       |                                     ^~~~~~
>       |                                     igamma
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:18:90: error: specialization of ‘template<class Scalar> typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&)’ in different namespace [-fpermissive]
>    18 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half digamma(const Eigen::half& a) {
>       |                                                                                          ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1978:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&)’
>  1978 |     digamma(const Scalar& x) {
>       |     ^~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: In function ‘typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::digamma(const Scalar&) [with Scalar = Eigen::half; typename Eigen::internal::digamma_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::half; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::half]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:19:37: error: ‘digamma’ is not a member of ‘Eigen::numext’; did you mean ‘igamma’?
>    19 |   return Eigen::half(Eigen::numext::digamma(static_cast<float>(a)));
>       |                                     ^~~~~~~
>       |                                     igamma
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:21:109: error: ‘zeta’ is not a template function
>    21 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half zeta(const Eigen::half& x, const Eigen::half& q) {
>       |                                                                                                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:24:114: error: ‘polygamma’ is not a template function
>    24 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half polygamma(const Eigen::half& n, const Eigen::half& x) {
>       |                                                                                                                  ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:27:86: error: specialization of ‘template<class Scalar> typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&)’ in different namespace [-fpermissive]
>    27 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erf(const Eigen::half& a) {
>       |                                                                                      ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1996:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&)’
>  1996 |     erf(const Scalar& x) {
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: In function ‘typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erf(const Scalar&) [with Scalar = Eigen::half; typename Eigen::internal::erf_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::half; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::half]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:28:37: error: ‘erf’ is not a member of ‘Eigen::numext’
>    28 |   return Eigen::half(Eigen::numext::erf(static_cast<float>(a)));
>       |                                     ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:28:37: note: suggested alternatives:
> In file included from /usr/include/c++/11/complex:44,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/cmath:1306:3: note:   ‘erf’
>  1306 |   erf(float __x)
>       |   ^~~
> /usr/include/c++/11/cmath:1318:5: note:   ‘std::erf’
>  1318 |     erf(_Tp __x)
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1996:5: note:   ‘Eigen::erf’
>  1996 |     erf(const Scalar& x) {
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:30:87: error: specialization of ‘template<class Scalar> typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&)’ in different namespace [-fpermissive]
>    30 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erfc(const Eigen::half& a) {
>       |                                                                                       ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2002:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&)’
>  2002 |     erfc(const Scalar& x) {
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: In function ‘typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::erfc(const Scalar&) [with Scalar = Eigen::half; typename Eigen::internal::erfc_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::half; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::half]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:31:37: error: ‘erfc’ is not a member of ‘Eigen::numext’
>    31 |   return Eigen::half(Eigen::numext::erfc(static_cast<float>(a)));
>       |                                     ^~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:31:37: note: suggested alternatives:
> In file included from /usr/include/c++/11/complex:44,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/cmath:1324:3: note:   ‘erfc’
>  1324 |   erfc(float __x)
>       |   ^~~~
> /usr/include/c++/11/cmath:1336:5: note:   ‘std::erfc’
>  1336 |     erfc(_Tp __x)
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2002:5: note:   ‘Eigen::erfc’
>  2002 |     erfc(const Scalar& x) {
>       |     ^~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:33:88: error: specialization of ‘template<class Scalar> typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&)’ in different namespace [-fpermissive]
>    33 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half ndtri(const Eigen::half& a) {
>       |                                                                                        ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2008:5: note:   from definition of ‘template<class Scalar> typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&)’
>  2008 |     ndtri(const Scalar& x) {
>       |     ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: In function ‘typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type Eigen::ndtri(const Scalar&) [with Scalar = Eigen::half; typename Eigen::internal::ndtri_retval<typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type>::type = Eigen::half; typename Eigen::internal::global_math_functions_filtering_base<Scalar>::type = Eigen::half]’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:34:37: error: ‘ndtri’ is not a member of ‘Eigen::numext’; did you mean ‘Eigen::ndtri’?
>    34 |   return Eigen::half(Eigen::numext::ndtri(static_cast<float>(a)));
>       |                                     ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:2008:5: note: ‘Eigen::ndtri’ declared here
>  2008 |     ndtri(const Scalar& x) {
>       |     ^~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:36:111: error: ‘igamma’ is not a template function
>    36 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half igamma(const Eigen::half& a, const Eigen::half& x) {
>       |                                                                                                               ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:40:106: error: ‘igamma_der_a’ is not a template function
>    40 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half igamma_der_a(const Eigen::half& a, const Eigen::half& x) {
>       |                                                                                                          ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:44:125: error: ‘gamma_sample_der_alpha’ is not a template function
>    44 | EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half gamma_sample_der_alpha(const Eigen::half& alpha, const Eigen::half& sample) {
>       |                                                                                                                             ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:74,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:47:112: error: ‘igammac’ is not a template function
>    47 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half igammac(const Eigen::half& a, const Eigen::half& x) {
>       |                                                                                                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h:50:134: error: ‘betainc’ is not a template function
>    50 | template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half betainc(const Eigen::half& a, const Eigen::half& b, const Eigen::half& x) {
>       |                                                                                                                                      ^
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:75,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h: In function ‘Packet Eigen::plgamma(const Packet&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:19:49: error: ‘lgamma’ has not been declared in ‘Eigen::numext’
>    19 | Packet plgamma(const Packet& a) { using numext::lgamma; return lgamma(a); }
>       |                                                 ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h: In function ‘Packet Eigen::pdigamma(const Packet&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:23:50: error: ‘digamma’ has not been declared in ‘Eigen::numext’
>    23 | Packet pdigamma(const Packet& a) { using numext::digamma; return digamma(a); }
>       |                                                  ^~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h: In function ‘Packet Eigen::perf(const Packet&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:35:46: error: ‘erf’ has not been declared in ‘Eigen::numext’
>    35 | Packet perf(const Packet& a) { using numext::erf; return erf(a); }
>       |                                              ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h: In function ‘Packet Eigen::perfc(const Packet&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:39:47: error: ‘erfc’ has not been declared in ‘Eigen::numext’
>    39 | Packet perfc(const Packet& a) { using numext::erfc; return erfc(a); }
>       |                                               ^~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h: In function ‘Packet Eigen::pndtri(const Packet&)’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:44:20: error: expected nested-name-specifier before ‘unpacket_traits’
>    44 |   typedef typename unpacket_traits<Packet>::type ScalarType;
>       |                    ^~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:44:35: error: expected initializer before ‘<’ token
>    44 |   typedef typename unpacket_traits<Packet>::type ScalarType;
>       |                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h:45:63: error: ‘ScalarType’ was not declared in this scope
>    45 |   using internal::generic_ndtri; return generic_ndtri<Packet, ScalarType>(a);
>       |                                                               ^~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:24:67: error: expected template-name before ‘<’ token
>    24 | template<typename Scalar> struct scalar_igamma_op : binary_op_base<Scalar,Scalar>
>       |                                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:24:67: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:36:8: error: ‘functor_traits’ is not a class template
>    36 | struct functor_traits<scalar_igamma_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:36:23: error: ‘scalar_igamma_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_igamma_op’?
>    36 | struct functor_traits<scalar_igamma_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_igamma_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:220:34: note: ‘Eigen::internal::scalar_igamma_op’ declared here
>   220 | template<typename Scalar> struct scalar_igamma_op;
>       |                                  ^~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:36:8: error: template argument required for ‘struct functor_traits’
>    36 | struct functor_traits<scalar_igamma_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:36:48: error: expected unqualified-id before ‘>’ token
>    36 | struct functor_traits<scalar_igamma_op<Scalar> > {
>       |                                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:63:8: error: ‘functor_traits’ is not a class template
>    63 | struct functor_traits<scalar_igamma_der_a_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:63:23: error: ‘scalar_igamma_der_a_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_igamma_der_a_op’?
>    63 | struct functor_traits<scalar_igamma_der_a_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_igamma_der_a_op
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:51:8: note: ‘Eigen::internal::scalar_igamma_der_a_op’ declared here
>    51 | struct scalar_igamma_der_a_op {
>       |        ^~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:63:8: error: template argument required for ‘struct functor_traits’
>    63 | struct functor_traits<scalar_igamma_der_a_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:63:54: error: expected unqualified-id before ‘>’ token
>    63 | struct functor_traits<scalar_igamma_der_a_op<Scalar> > {
>       |                                                      ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:91:8: error: ‘functor_traits’ is not a class template
>    91 | struct functor_traits<scalar_gamma_sample_der_alpha_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:91:23: error: ‘scalar_gamma_sample_der_alpha_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_gamma_sample_der_alpha_op’?
>    91 | struct functor_traits<scalar_gamma_sample_der_alpha_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_gamma_sample_der_alpha_op
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:79:8: note: ‘Eigen::internal::scalar_gamma_sample_der_alpha_op’ declared here
>    79 | struct scalar_gamma_sample_der_alpha_op {
>       |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:91:8: error: template argument required for ‘struct functor_traits’
>    91 | struct functor_traits<scalar_gamma_sample_der_alpha_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:91:64: error: expected unqualified-id before ‘>’ token
>    91 | struct functor_traits<scalar_gamma_sample_der_alpha_op<Scalar> > {
>       |                                                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:104:68: error: expected template-name before ‘<’ token
>   104 | template<typename Scalar> struct scalar_igammac_op : binary_op_base<Scalar,Scalar>
>       |                                                                    ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:104:68: error: expected ‘{’ before ‘<’ token
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:117:8: error: ‘functor_traits’ is not a class template
>   117 | struct functor_traits<scalar_igammac_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:117:23: error: ‘scalar_igammac_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_igammac_op’?
>   117 | struct functor_traits<scalar_igammac_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_igammac_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:221:34: note: ‘Eigen::internal::scalar_igammac_op’ declared here
>   221 | template<typename Scalar> struct scalar_igammac_op;
>       |                                  ^~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:117:8: error: template argument required for ‘struct functor_traits’
>   117 | struct functor_traits<scalar_igammac_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:117:49: error: expected unqualified-id before ‘>’ token
>   117 | struct functor_traits<scalar_igammac_op<Scalar> > {
>       |                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:142:8: error: ‘functor_traits’ is not a class template
>   142 | struct functor_traits<scalar_betainc_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:142:23: error: ‘scalar_betainc_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_betainc_op’?
>   142 | struct functor_traits<scalar_betainc_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_betainc_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:223:34: note: ‘Eigen::internal::scalar_betainc_op’ declared here
>   223 | template<typename Scalar> struct scalar_betainc_op;
>       |                                  ^~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:142:8: error: template argument required for ‘struct functor_traits’
>   142 | struct functor_traits<scalar_betainc_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:142:49: error: expected unqualified-id before ‘>’ token
>   142 | struct functor_traits<scalar_betainc_op<Scalar> > {
>       |                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:161:20: error: expected nested-name-specifier before ‘packet_traits’
>   161 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:161:20: error: expected ‘;’ at end of member declaration
>   161 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:161:33: error: expected unqualified-id before ‘<’ token
>   161 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:162:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   162 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const { return internal::plgamma(a); }
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: In member function ‘const Scalar Eigen::internal::scalar_lgamma_op<Scalar>::operator()(const Scalar&) const’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:159:19: error: ‘lgamma’ has not been declared in ‘Eigen::numext’
>   159 |     using numext::lgamma; return lgamma(a);
>       |                   ^~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:165:8: error: ‘functor_traits’ is not a class template
>   165 | struct functor_traits<scalar_lgamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:165:23: error: ‘scalar_lgamma_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_lgamma_op’?
>   165 | struct functor_traits<scalar_lgamma_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_lgamma_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:215:34: note: ‘Eigen::internal::scalar_lgamma_op’ declared here
>   215 | template<typename Scalar> struct scalar_lgamma_op;
>       |                                  ^~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:165:8: error: template argument required for ‘struct functor_traits’
>   165 | struct functor_traits<scalar_lgamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:165:48: error: expected unqualified-id before ‘>’ token
>   165 | struct functor_traits<scalar_lgamma_op<Scalar> >
>       |                                                ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:183:20: error: expected nested-name-specifier before ‘packet_traits’
>   183 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:183:20: error: expected ‘;’ at end of member declaration
>   183 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:183:33: error: expected unqualified-id before ‘<’ token
>   183 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:184:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   184 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const { return internal::pdigamma(a); }
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: In member function ‘const Scalar Eigen::internal::scalar_digamma_op<Scalar>::operator()(const Scalar&) const’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:181:19: error: ‘digamma’ has not been declared in ‘Eigen::numext’
>   181 |     using numext::digamma; return digamma(a);
>       |                   ^~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:187:8: error: ‘functor_traits’ is not a class template
>   187 | struct functor_traits<scalar_digamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:187:23: error: ‘scalar_digamma_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_digamma_op’?
>   187 | struct functor_traits<scalar_digamma_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_digamma_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:216:34: note: ‘Eigen::internal::scalar_digamma_op’ declared here
>   216 | template<typename Scalar> struct scalar_digamma_op;
>       |                                  ^~~~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:187:8: error: template argument required for ‘struct functor_traits’
>   187 | struct functor_traits<scalar_digamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:187:49: error: expected unqualified-id before ‘>’ token
>   187 | struct functor_traits<scalar_digamma_op<Scalar> >
>       |                                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:205:22: error: expected nested-name-specifier before ‘packet_traits’
>   205 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                      ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:205:22: error: expected ‘;’ at end of member declaration
>   205 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                      ^~~~~~~~~~~~~
>       |                                   ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:205:35: error: expected unqualified-id before ‘<’ token
>   205 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:206:43: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   206 |     EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& x, const Packet& q) const { return internal::pzeta(x, q); }
>       |                                           ^~~~~~
>       |                                           Packet4i
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:209:8: error: ‘functor_traits’ is not a class template
>   209 | struct functor_traits<scalar_zeta_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:209:23: error: ‘scalar_zeta_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_zeta_op’?
>   209 | struct functor_traits<scalar_zeta_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_zeta_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:222:34: note: ‘Eigen::internal::scalar_zeta_op’ declared here
>   222 | template<typename Scalar> struct scalar_zeta_op;
>       |                                  ^~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:209:8: error: template argument required for ‘struct functor_traits’
>   209 | struct functor_traits<scalar_zeta_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:209:46: error: expected unqualified-id before ‘>’ token
>   209 | struct functor_traits<scalar_zeta_op<Scalar> >
>       |                                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:227:22: error: expected nested-name-specifier before ‘packet_traits’
>   227 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                      ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:227:22: error: expected ‘;’ at end of member declaration
>   227 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                      ^~~~~~~~~~~~~
>       |                                   ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:227:35: error: expected unqualified-id before ‘<’ token
>   227 |     typedef typename packet_traits<Scalar>::type Packet;
>       |                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:228:43: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   228 |     EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& n, const Packet& x) const { return internal::ppolygamma(n, x); }
>       |                                           ^~~~~~
>       |                                           Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:231:8: error: ‘functor_traits’ is not a class template
>   231 | struct functor_traits<scalar_polygamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:231:23: error: ‘scalar_polygamma_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_polygamma_op’?
>   231 | struct functor_traits<scalar_polygamma_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_polygamma_op
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:222:34: note: ‘Eigen::internal::scalar_polygamma_op’ declared here
>   222 | template<typename Scalar> struct scalar_polygamma_op {
>       |                                  ^~~~~~~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:231:8: error: template argument required for ‘struct functor_traits’
>   231 | struct functor_traits<scalar_polygamma_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:231:51: error: expected unqualified-id before ‘>’ token
>   231 | struct functor_traits<scalar_polygamma_op<Scalar> >
>       |                                                   ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: In member function ‘const Scalar Eigen::internal::scalar_erf_op<Scalar>::operator()(const Scalar&) const’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:248:20: error: ‘erf’ is not a member of ‘Eigen::numext’
>   248 |     return numext::erf(a);
>       |                    ^~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:248:20: note: suggested alternatives:
> In file included from /usr/include/c++/11/complex:44,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/cmath:1306:3: note:   ‘erf’
>  1306 |   erf(float __x)
>       |   ^~~
> /usr/include/c++/11/cmath:1318:5: note:   ‘std::erf’
>  1318 |     erf(_Tp __x)
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:69,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h:1996:5: note:   ‘Eigen::erf’
>  1996 |     erf(const Scalar& x) {
>       |     ^~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:256:8: error: ‘functor_traits’ is not a class template
>   256 | struct functor_traits<scalar_erf_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:256:23: error: ‘scalar_erf_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_erf_op’?
>   256 | struct functor_traits<scalar_erf_op<Scalar> > {
>       |                       ^~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_erf_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:217:34: note: ‘Eigen::internal::scalar_erf_op’ declared here
>   217 | template<typename Scalar> struct scalar_erf_op;
>       |                                  ^~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:256:8: error: template argument required for ‘struct functor_traits’
>   256 | struct functor_traits<scalar_erf_op<Scalar> > {
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:256:45: error: expected unqualified-id before ‘>’ token
>   256 | struct functor_traits<scalar_erf_op<Scalar> > {
>       |                                             ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:288:20: error: expected nested-name-specifier before ‘packet_traits’
>   288 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:288:20: error: expected ‘;’ at end of member declaration
>   288 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:288:33: error: expected unqualified-id before ‘<’ token
>   288 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:289:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   289 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const { return internal::perfc(a); }
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: In member function ‘const Scalar Eigen::internal::scalar_erfc_op<Scalar>::operator()(const Scalar&) const’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:286:19: error: ‘erfc’ has not been declared in ‘Eigen::numext’
>   286 |     using numext::erfc; return erfc(a);
>       |                   ^~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:292:8: error: ‘functor_traits’ is not a class template
>   292 | struct functor_traits<scalar_erfc_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:292:23: error: ‘scalar_erfc_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_erfc_op’?
>   292 | struct functor_traits<scalar_erfc_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_erfc_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:218:34: note: ‘Eigen::internal::scalar_erfc_op’ declared here
>   218 | template<typename Scalar> struct scalar_erfc_op;
>       |                                  ^~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:292:8: error: template argument required for ‘struct functor_traits’
>   292 | struct functor_traits<scalar_erfc_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:292:46: error: expected unqualified-id before ‘>’ token
>   292 | struct functor_traits<scalar_erfc_op<Scalar> >
>       |                                              ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:311:20: error: expected nested-name-specifier before ‘packet_traits’
>   311 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:311:20: error: expected ‘;’ at end of member declaration
>   311 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                    ^~~~~~~~~~~~~
>       |                                 ;
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:311:33: error: expected unqualified-id before ‘<’ token
>   311 |   typedef typename packet_traits<Scalar>::type Packet;
>       |                                 ^
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:312:41: error: ‘Packet’ does not name a type; did you mean ‘Packet4i’?
>   312 |   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(const Packet& a) const { return internal::pndtri(a); }
>       |                                         ^~~~~~
>       |                                         Packet4i
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: In member function ‘const Scalar Eigen::internal::scalar_ndtri_op<Scalar>::operator()(const Scalar&) const’:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:309:19: error: ‘ndtri’ has not been declared in ‘Eigen::numext’
>   309 |     using numext::ndtri; return ndtri(a);
>       |                   ^~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h: At global scope:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:315:8: error: ‘functor_traits’ is not a class template
>   315 | struct functor_traits<scalar_ndtri_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:315:23: error: ‘scalar_ndtri_op’ was not declared in this scope; did you mean ‘Eigen::internal::scalar_ndtri_op’?
>   315 | struct functor_traits<scalar_ndtri_op<Scalar> >
>       |                       ^~~~~~~~~~~~~~~
>       |                       Eigen::internal::scalar_ndtri_op
> In file included from /usr/include/eigen3/Eigen/Core:163,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:219:34: note: ‘Eigen::internal::scalar_ndtri_op’ declared here
>   219 | template<typename Scalar> struct scalar_ndtri_op;
>       |                                  ^~~~~~~~~~~~~~~
> In file included from /usr/include/eigen3/unsupported/Eigen/SpecialFunctions:76,
>                  from ./core/math/betainc.h:21,
>                  from core/math/zstatistic.cpp:20:
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:315:8: error: template argument required for ‘struct functor_traits’
>   315 | struct functor_traits<scalar_ndtri_op<Scalar> >
>       |        ^~~~~~~~~~~~~~
> /usr/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h:315:47: error: expected unqualified-id before ‘>’ token
>   315 | struct functor_traits<scalar_ndtri_op<Scalar> >
>       |                                               ^
> In file included from core/math/zstatistic.cpp:20:
> ./core/math/betainc.h:53:5: error: ‘default_type’ does not name a type
>    53 |     default_type betaincreg (const default_type a, const default_type b, const default_type x);
>       |     ^~~~~~~~~~~~
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:73:24: error: ‘unique_ptr’ does not name a type
>    73 |     using _State_ptr = unique_ptr<_State>;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:93:21: error: ‘hash’ is not a class template
>    93 |       friend struct hash<id>;
>       |                     ^~~~
> /usr/include/c++/11/bits/std_thread.h:93:21: error: template argument required for ‘struct hash’
> /usr/include/c++/11/bits/std_thread.h:93:7: error: friend declaration does not name a class or function
>    93 |       friend struct hash<id>;
>       |       ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:107:16: error: ‘basic_ostream’ does not name a type
>   107 |         friend basic_ostream<_CharT, _Traits>&
>       |                ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:118:26: error: ‘__not_’ does not name a type
>   118 |       using __not_same = __not_<is_same<__remove_cvref_t<_Tp>, thread>>;
>       |                          ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:125:25: error: ‘_Require’ does not name a type
>   125 |              typename = _Require<__not_same<_Callable>>>
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:125:33: error: expected ‘>’ before ‘<’ token
>   125 |              typename = _Require<__not_same<_Callable>>>
>       |                                 ^
> /usr/include/c++/11/bits/std_thread.h:215:21: error: ‘_State_ptr’ has not been declared
>   215 |     _M_start_thread(_State_ptr, void (*)());
>       |                     ^~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:246:27: error: ‘tuple’ was not declared in this scope; did you mean ‘std::tuple’?
>   246 |           struct __result<tuple<_Fn, _Args...>>
>       |                           ^~~~~
>       |                           std::tuple
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/type_traits:45:11: note: ‘std::tuple’ declared here
>    45 |     class tuple;
>       |           ^~~~~
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:246:43: error: template argument 1 is invalid
>   246 |           struct __result<tuple<_Fn, _Args...>>
>       |                                           ^~~
> /usr/include/c++/11/bits/std_thread.h:246:46: error: expected unqualified-id before ‘>’ token
>   246 |           struct __result<tuple<_Fn, _Args...>>
>       |                                              ^~
> /usr/include/c++/11/bits/std_thread.h:252:21: error: ‘_Index_tuple’ has not been declared
>   252 |           _M_invoke(_Index_tuple<_Ind...>)
>       |                     ^~~~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:252:33: error: expected ‘,’ or ‘...’ before ‘<’ token
>   252 |           _M_invoke(_Index_tuple<_Ind...>)
>       |                                 ^
> /usr/include/c++/11/bits/std_thread.h:266:38: error: ‘tuple’ was not declared in this scope; did you mean ‘std::tuple’?
>   266 |       using _Call_wrapper = _Invoker<tuple<typename decay<_Tp>::type...>>;
>       |                                      ^~~~~
>       |                                      std::tuple
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/type_traits:45:11: note: ‘std::tuple’ declared here
>    45 |     class tuple;
>       |           ^~~~~
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:266:72: error: template argument 1 is invalid
>   266 |       using _Call_wrapper = _Invoker<tuple<typename decay<_Tp>::type...>>;
>       |                                                                        ^~
> /usr/include/c++/11/bits/std_thread.h: In constructor ‘std::thread::thread(_Callable&&, _Args&& ...)’:
> /usr/include/c++/11/bits/std_thread.h:129:24: error: ‘__is_invocable’ was not declared in this scope; did you mean ‘std::__is_invocable’?
>   129 |         static_assert( __is_invocable<typename decay<_Callable>::type,
>       |                        ^~~~~~~~~~~~~~
>       |                        std::__is_invocable
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/type_traits:2925:12: note: ‘std::__is_invocable’ declared here
>  2925 |     struct __is_invocable
>       |            ^~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:129:48: error: expected nested-name-specifier before ‘decay’
>   129 |         static_assert( __is_invocable<typename decay<_Callable>::type,
>       |                                                ^~~~~
> /usr/include/c++/11/bits/std_thread.h:129:48: error: expected ‘(’ before ‘decay’
> /usr/include/c++/11/bits/std_thread.h:129:48: error: expected ‘,’ before ‘decay’
> /usr/include/c++/11/bits/std_thread.h:129:48: error: expected string-literal before ‘decay’
> /usr/include/c++/11/bits/std_thread.h:129:48: error: expected ‘)’ before ‘decay’
> /usr/include/c++/11/bits/std_thread.h:129:22: note: to match this ‘(’
>   129 |         static_assert( __is_invocable<typename decay<_Callable>::type,
>       |                      ^
> /usr/include/c++/11/bits/std_thread.h:140:26: error: ‘_Call_wrapper’ does not name a type
>   140 |         using _Wrapper = _Call_wrapper<_Callable, _Args...>;
>       |                          ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:143:52: error: ‘_Wrapper’ was not declared in this scope
>   143 |         _M_start_thread(_State_ptr(new _State_impl<_Wrapper>(
>       |                                                    ^~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:143:60: error: template argument 1 is invalid
>   143 |         _M_start_thread(_State_ptr(new _State_impl<_Wrapper>(
>       |                                                            ^
> /usr/include/c++/11/bits/std_thread.h:143:25: error: there are no arguments to ‘_State_ptr’ that depend on a template parameter, so a declaration of ‘_State_ptr’ must be available [-fpermissive]
>   143 |         _M_start_thread(_State_ptr(new _State_impl<_Wrapper>(
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h: In member function ‘bool std::thread::joinable() const’:
> /usr/include/c++/11/bits/std_thread.h:176:22: error: no match for ‘operator==’ (operand types are ‘const std::thread::id’ and ‘std::thread::id’)
>   176 |     { return !(_M_id == id()); }
>       |                ~~~~~ ^~ ~~~~
>       |                |        |
>       |                |        std::thread::id
>       |                const std::thread::id
> In file included from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_pair.h:466:5: note: candidate: ‘template<class _T1, class _T2> constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)’
>   466 |     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_pair.h:466:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::pair<_T1, _T2>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_iterator.h:419:5: note: candidate: ‘template<class _Iterator> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)’
>   419 |     operator==(const reverse_iterator<_Iterator>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_iterator.h:419:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::reverse_iterator<_Iterator>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_iterator.h:458:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)’
>   458 |     operator==(const reverse_iterator<_IteratorL>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_iterator.h:458:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::reverse_iterator<_Iterator>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_iterator.h:1533:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)’
>  1533 |     operator==(const move_iterator<_IteratorL>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_iterator.h:1533:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::move_iterator<_IteratorL>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_iterator.h:1601:5: note: candidate: ‘template<class _Iterator> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)’
>  1601 |     operator==(const move_iterator<_Iterator>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_iterator.h:1601:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::move_iterator<_IteratorL>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_tree.h:64,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/allocator.h:234:5: note: candidate: ‘template<class _T1, class _T2> bool std::operator==(const std::allocator<_Tp1>&, const std::allocator<_T2>&)’
>   234 |     operator==(const allocator<_T1>&, const allocator<_T2>&)
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/allocator.h:234:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::allocator<_Tp1>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/stl_map.h:63,
>                  from /usr/include/c++/11/map:61,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/array:276:5: note: candidate: ‘template<class _Tp, long unsigned int _Nm> bool std::operator==(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)’
>   276 |     operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
>       |     ^~~~~~~~
> /usr/include/c++/11/array:276:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::array<_Tp, _Nm>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/stl_map.h:63,
>                  from /usr/include/c++/11/map:61,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/tuple:1528:5: note: candidate: ‘template<class ... _TElements, class ... _UElements> constexpr bool std::operator==(const std::tuple<_Tps ...>&, const std::tuple<_Args2 ...>&)’
>  1528 |     operator==(const tuple<_TElements...>& __t,
>       |     ^~~~~~~~
> /usr/include/c++/11/tuple:1528:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::tuple<_Tps ...>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/map:61,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_map.h:1463:5: note: candidate: ‘template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator==(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&)’
>  1463 |     operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_map.h:1463:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::map<_Key, _Tp, _Compare, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/map:62,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_multimap.h:1128:5: note: candidate: ‘template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator==(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)’
>  1128 |     operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_multimap.h:1128:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::multimap<_Key, _Tp, _Compare, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/iosfwd:40,
>                  from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/postypes.h:222:5: note: candidate: ‘template<class _StateT> bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)’
>   222 |     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/postypes.h:222:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::fpos<_StateT>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/string:55,
>                  from /usr/include/c++/11/stdexcept:39,
>                  from /usr/include/c++/11/system_error:41,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/basic_string.h:6224:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)’
>  6224 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/basic_string.h:6224:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/string:55,
>                  from /usr/include/c++/11/stdexcept:39,
>                  from /usr/include/c++/11/system_error:41,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/basic_string.h:6232:5: note: candidate: ‘template<class _CharT> typename __gnu_cxx::__enable_if<std::__is_char<_Tp>::__value, bool>::__type std::operator==(const std::__cxx11::basic_string<_CharT>&, const std::__cxx11::basic_string<_CharT>&)’
>  6232 |     operator==(const basic_string<_CharT>& __lhs,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/basic_string.h:6232:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::__cxx11::basic_string<_CharT>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/string:55,
>                  from /usr/include/c++/11/stdexcept:39,
>                  from /usr/include/c++/11/system_error:41,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/basic_string.h:6246:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)’
>  6246 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/basic_string.h:6246:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/string:55,
>                  from /usr/include/c++/11/stdexcept:39,
>                  from /usr/include/c++/11/system_error:41,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/basic_string.h:6287:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const _CharT*, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)’
>  6287 |     operator==(const _CharT* __lhs,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/basic_string.h:6287:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   mismatched types ‘const _CharT*’ and ‘std::thread::id’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/locale_facets.h:48,
>                  from /usr/include/c++/11/bits/basic_ios.h:37,
>                  from /usr/include/c++/11/ios:44,
>                  from /usr/include/c++/11/istream:38,
>                  from /usr/include/c++/11/sstream:38,
>                  from /usr/include/c++/11/complex:45,
>                  from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/streambuf_iterator.h:226:5: note: candidate: ‘template<class _CharT, class _Traits> bool std::operator==(const std::istreambuf_iterator<_CharT, _Traits>&, const std::istreambuf_iterator<_CharT, _Traits>&)’
>   226 |     operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/streambuf_iterator.h:226:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::istreambuf_iterator<_CharT, _Traits>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/complex:464:5: note: candidate: ‘template<class _Tp> constexpr bool std::operator==(const std::complex<_Tp>&, const std::complex<_Tp>&)’
>   464 |     operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/complex:464:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::complex<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/complex:469:5: note: candidate: ‘template<class _Tp> constexpr bool std::operator==(const std::complex<_Tp>&, const _Tp&)’
>   469 |     operator==(const complex<_Tp>& __x, const _Tp& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/complex:469:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::complex<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from ./core/types.h:21,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/complex:475:5: note: candidate: ‘template<class _Tp> constexpr bool std::operator==(const _Tp&, const std::complex<_Tp>&)’
>   475 |     operator==(const _Tp& __x, const complex<_Tp>& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/complex:475:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘std::thread::id’ is not derived from ‘const std::complex<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/deque:67,
>                  from ./core/types.h:23,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_deque.h:2246:5: note: candidate: ‘template<class _Tp, class _Alloc> bool std::operator==(const std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&)’
>  2246 |     operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_deque.h:2246:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::deque<_Tp, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:76,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/unique_ptr.h:753:5: note: candidate: ‘template<class _Tp, class _Dp, class _Up, class _Ep> bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, const std::unique_ptr<_Up, _Ep>&)’
>   753 |     operator==(const unique_ptr<_Tp, _Dp>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unique_ptr.h:753:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:76,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/unique_ptr.h:760:5: note: candidate: ‘template<class _Tp, class _Dp> bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, std::nullptr_t)’
>   760 |     operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unique_ptr.h:760:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:76,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/unique_ptr.h:767:5: note: candidate: ‘template<class _Tp, class _Dp> bool std::operator==(std::nullptr_t, const std::unique_ptr<_Tp, _Dp>&)’
>   767 |     operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unique_ptr.h:767:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘std::thread::id’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/shared_ptr.h:53,
>                  from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr_base.h:1410:5: note: candidate: ‘template<class _Tp1, class _Tp2, __gnu_cxx::_Lock_policy _Lp> bool std::operator==(const std::__shared_ptr<_Tp1, _Lp>&, const std::__shared_ptr<_Tp2, _Lp>&)’
>  1410 |     operator==(const __shared_ptr<_Tp1, _Lp>& __a,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr_base.h:1410:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::__shared_ptr<_Tp1, _Lp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/shared_ptr.h:53,
>                  from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr_base.h:1416:5: note: candidate: ‘template<class _Tp, __gnu_cxx::_Lock_policy _Lp> bool std::operator==(const std::__shared_ptr<_Tp, _Lp>&, std::nullptr_t)’
>  1416 |     operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr_base.h:1416:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::__shared_ptr<_Tp, _Lp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/bits/shared_ptr.h:53,
>                  from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr_base.h:1436:5: note: candidate: ‘template<class _Tp, __gnu_cxx::_Lock_policy _Lp> bool std::operator==(std::nullptr_t, const std::__shared_ptr<_Tp, _Lp>&)’
>  1436 |     operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr_base.h:1436:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘std::thread::id’ is not derived from ‘const std::__shared_ptr<_Tp, _Lp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr.h:437:5: note: candidate: ‘template<class _Tp, class _Up> bool std::operator==(const std::shared_ptr<_Tp>&, const std::shared_ptr<_Tp>&)’
>   437 |     operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr.h:437:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::shared_ptr<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr.h:443:5: note: candidate: ‘template<class _Tp> bool std::operator==(const std::shared_ptr<_Tp>&, std::nullptr_t)’
>   443 |     operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr.h:443:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::shared_ptr<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/memory:77,
>                  from ./core/types.h:25,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/shared_ptr.h:464:5: note: candidate: ‘template<class _Tp> bool std::operator==(std::nullptr_t, const std::shared_ptr<_Tp>&)’
>   464 |     operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/shared_ptr.h:464:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘std::thread::id’ is not derived from ‘const std::shared_ptr<_Tp>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_vector.h:1892:5: note: candidate: ‘template<class _Tp, class _Alloc> bool std::operator==(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)’
>  1892 |     operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/stl_vector.h:1892:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::vector<_Tp, _Alloc>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/functional:59,
>                  from /usr/include/eigen3/Eigen/Core:85,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/std_function.h:718:5: note: candidate: ‘template<class _Res, class ... _Args> bool std::operator==(const std::function<_Res(_ArgTypes ...)>&, std::nullptr_t)’
>   718 |     operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/std_function.h:718:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘const std::thread::id’ is not derived from ‘const std::function<_Res(_ArgTypes ...)>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/functional:59,
>                  from /usr/include/eigen3/Eigen/Core:85,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/std_function.h:725:5: note: candidate: ‘template<class _Res, class ... _Args> bool std::operator==(std::nullptr_t, const std::function<_Res(_ArgTypes ...)>&)’
>   725 |     operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/std_function.h:725:5: note:   template argument deduction/substitution failed:
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h:176:28: note:   ‘std::thread::id’ is not derived from ‘const std::function<_Res(_ArgTypes ...)>’
>   176 |     { return !(_M_id == id()); }
>       |                            ^
> In file included from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/system_error:362:3: note: candidate: ‘bool std::operator==(const std::error_code&, const std::error_code&)’
>   362 |   operator==(const error_code& __lhs, const error_code& __rhs) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/system_error:362:32: note:   no known conversion for argument 1 from ‘const std::thread::id’ to ‘const std::error_code&’
>   362 |   operator==(const error_code& __lhs, const error_code& __rhs) noexcept
>       |              ~~~~~~~~~~~~~~~~~~^~~~~
> /usr/include/c++/11/system_error:368:3: note: candidate: ‘bool std::operator==(const std::error_code&, const std::error_condition&)’
>   368 |   operator==(const error_code& __lhs, const error_condition& __rhs) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/system_error:368:32: note:   no known conversion for argument 1 from ‘const std::thread::id’ to ‘const std::error_code&’
>   368 |   operator==(const error_code& __lhs, const error_condition& __rhs) noexcept
>       |              ~~~~~~~~~~~~~~~~~~^~~~~
> /usr/include/c++/11/system_error:376:3: note: candidate: ‘bool std::operator==(const std::error_condition&, const std::error_condition&)’
>   376 |   operator==(const error_condition& __lhs,
>       |   ^~~~~~~~
> /usr/include/c++/11/system_error:376:37: note:   no known conversion for argument 1 from ‘const std::thread::id’ to ‘const std::error_condition&’
>   376 |   operator==(const error_condition& __lhs,
>       |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
> /usr/include/c++/11/system_error:408:3: note: candidate: ‘bool std::operator==(const std::error_condition&, const std::error_code&)’
>   408 |   operator==(const error_condition& __lhs, const error_code& __rhs) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/system_error:408:37: note:   no known conversion for argument 1 from ‘const std::thread::id’ to ‘const std::error_condition&’
>   408 |   operator==(const error_condition& __lhs, const error_code& __rhs) noexcept
>       |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
> In file included from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/std_thread.h: In member function ‘typename std::thread::_Invoker<_Tuple>::__result<_Tuple>::type std::thread::_Invoker<_Tuple>::operator()()’:
> /usr/include/c++/11/bits/std_thread.h:259:24: error: expected nested-name-specifier before ‘_Build_index_tuple’
>   259 |             = typename _Build_index_tuple<tuple_size<_Tuple>::value>::__type;
>       |                        ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:260:28: error: there are no arguments to ‘_Indices’ that depend on a template parameter, so a declaration of ‘_Indices’ must be available [-fpermissive]
>   260 |           return _M_invoke(_Indices());
>       |                            ^~~~~~~~
> /usr/include/c++/11/bits/std_thread.h: At global scope:
> /usr/include/c++/11/bits/std_thread.h:277:3: error: variable or field ‘swap’ declared void
>   277 |   swap(thread& __x, thread& __y) noexcept
>       |   ^~~~
> /usr/include/c++/11/bits/std_thread.h:277:8: error: ‘thread’ was not declared in this scope; did you mean ‘std::thread’?
>   277 |   swap(thread& __x, thread& __y) noexcept
>       |        ^~~~~~
>       |        std::thread
> /usr/include/c++/11/bits/std_thread.h:62:9: note: ‘std::thread’ declared here
>    62 |   class thread
>       |         ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:277:16: error: ‘__x’ was not declared in this scope
>   277 |   swap(thread& __x, thread& __y) noexcept
>       |                ^~~
> /usr/include/c++/11/bits/std_thread.h:277:21: error: ‘thread’ was not declared in this scope; did you mean ‘std::thread’?
>   277 |   swap(thread& __x, thread& __y) noexcept
>       |                     ^~~~~~
>       |                     std::thread
> /usr/include/c++/11/bits/std_thread.h:62:9: note: ‘std::thread’ declared here
>    62 |   class thread
>       |         ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:277:29: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>   277 |   swap(thread& __x, thread& __y) noexcept
>       |                             ^~~
>       |                             __yn
> /usr/include/c++/11/bits/std_thread.h:281:3: error: declaration of ‘operator==’ as non-function
>   281 |   operator==(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/bits/std_thread.h:281:14: error: ‘thread’ has not been declared
>   281 |   operator==(thread::id __x, thread::id __y) noexcept
>       |              ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:281:30: error: ‘thread’ has not been declared
>   281 |   operator==(thread::id __x, thread::id __y) noexcept
>       |                              ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:295:12: error: ‘hash’ is not a class template
>   295 |     struct hash<thread::id>
>       |            ^~~~
> /usr/include/c++/11/bits/std_thread.h:295:17: error: ‘thread’ was not declared in this scope; did you mean ‘std::thread’?
>   295 |     struct hash<thread::id>
>       |                 ^~~~~~
>       |                 std::thread
> /usr/include/c++/11/bits/std_thread.h:62:9: note: ‘std::thread’ declared here
>    62 |   class thread
>       |         ^~~~~~
> /usr/include/c++/11/bits/std_thread.h:295:27: error: template specifiers not specified in declaration of ‘template<class _Tp> struct std::hash’
>   295 |     struct hash<thread::id>
>       |                           ^
> /usr/include/c++/11/bits/std_thread.h:296:25: error: expected template-name before ‘<’ token
>   296 |     : public __hash_base<size_t, thread::id>
>       |                         ^
> /usr/include/c++/11/bits/std_thread.h:306:12: error: ‘thread’ does not name a type
>   306 |     inline thread::id
>       |            ^~~~~~
> In file included from /usr/include/c++/11/thread:44,
>                  from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/this_thread_sleep.h:70:23: error: ‘chrono’ does not name a type
>    70 |       sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
>       |                       ^~~~~~
> /usr/include/c++/11/bits/this_thread_sleep.h:70:39: error: expected unqualified-id before ‘<’ token
>    70 |       sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
>       |                                       ^
> /usr/include/c++/11/bits/this_thread_sleep.h:70:39: error: expected ‘)’ before ‘<’ token
>    70 |       sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
>       |                ~                      ^
>       |                                       )
> /usr/include/c++/11/bits/this_thread_sleep.h:70:39: error: expected initializer before ‘<’ token
> /usr/include/c++/11/bits/this_thread_sleep.h:92:25: error: ‘chrono’ does not name a type
>    92 |       sleep_until(const chrono::time_point<_Clock, _Duration>& __atime)
>       |                         ^~~~~~
> /usr/include/c++/11/bits/this_thread_sleep.h:92:43: error: expected unqualified-id before ‘<’ token
>    92 |       sleep_until(const chrono::time_point<_Clock, _Duration>& __atime)
>       |                                           ^
> /usr/include/c++/11/bits/this_thread_sleep.h:92:43: error: expected ‘)’ before ‘<’ token
>    92 |       sleep_until(const chrono::time_point<_Clock, _Duration>& __atime)
>       |                  ~                        ^
>       |                                           )
> /usr/include/c++/11/bits/this_thread_sleep.h:92:43: error: expected initializer before ‘<’ token
> In file included from ./core/app.h:23,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/thread:66:3: error: declaration of ‘operator!=’ as non-function
>    66 |   operator!=(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/thread:66:14: error: ‘thread’ has not been declared
>    66 |   operator!=(thread::id __x, thread::id __y) noexcept
>       |              ^~~~~~
> /usr/include/c++/11/thread:66:30: error: ‘thread’ has not been declared
>    66 |   operator!=(thread::id __x, thread::id __y) noexcept
>       |                              ^~~~~~
> /usr/include/c++/11/thread:70:3: error: declaration of ‘operator<’ as non-function
>    70 |   operator<(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/thread:70:13: error: ‘thread’ has not been declared
>    70 |   operator<(thread::id __x, thread::id __y) noexcept
>       |             ^~~~~~
> /usr/include/c++/11/thread:70:29: error: ‘thread’ has not been declared
>    70 |   operator<(thread::id __x, thread::id __y) noexcept
>       |                             ^~~~~~
> /usr/include/c++/11/thread:78:3: error: declaration of ‘operator<=’ as non-function
>    78 |   operator<=(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/thread:78:14: error: ‘thread’ has not been declared
>    78 |   operator<=(thread::id __x, thread::id __y) noexcept
>       |              ^~~~~~
> /usr/include/c++/11/thread:78:30: error: ‘thread’ has not been declared
>    78 |   operator<=(thread::id __x, thread::id __y) noexcept
>       |                              ^~~~~~
> /usr/include/c++/11/thread:82:3: error: declaration of ‘operator>’ as non-function
>    82 |   operator>(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/thread:82:13: error: ‘thread’ has not been declared
>    82 |   operator>(thread::id __x, thread::id __y) noexcept
>       |             ^~~~~~
> /usr/include/c++/11/thread:82:29: error: ‘thread’ has not been declared
>    82 |   operator>(thread::id __x, thread::id __y) noexcept
>       |                             ^~~~~~
> /usr/include/c++/11/thread:86:3: error: declaration of ‘operator>=’ as non-function
>    86 |   operator>=(thread::id __x, thread::id __y) noexcept
>       |   ^~~~~~~~
> /usr/include/c++/11/thread:86:14: error: ‘thread’ has not been declared
>    86 |   operator>=(thread::id __x, thread::id __y) noexcept
>       |              ^~~~~~
> /usr/include/c++/11/thread:86:30: error: ‘thread’ has not been declared
>    86 |   operator>=(thread::id __x, thread::id __y) noexcept
>       |                              ^~~~~~
> /usr/include/c++/11/thread:91:12: error: ‘basic_ostream’ does not name a type
>    91 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.h:59:39: error: ‘locale’ has not been declared
>    59 |     struct __timepunct_cache : public locale::facet
>       |                                       ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:59:47: error: expected ‘{’ before ‘facet’
>    59 |     struct __timepunct_cache : public locale::facet
>       |                                               ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:150:5: error: ‘__timepunct_cache’ does not name a type
>   150 |     __timepunct_cache<_CharT>::~__timepunct_cache()
>       |     ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:161:22: error: expected initializer before ‘<’ token
>   161 |     __timepunct_cache<char>::_S_timezones[14];
>       |                      ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:166:22: error: expected initializer before ‘<’ token
>   166 |     __timepunct_cache<wchar_t>::_S_timezones[14];
>       |                      ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:171:36: error: expected initializer before ‘<’ token
>   171 |     const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
>       |                                    ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:174:32: error: ‘locale’ has not been declared
>   174 |     class __timepunct : public locale::facet
>       |                                ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:174:40: error: expected ‘{’ before ‘facet’
>   174 |     class __timepunct : public locale::facet
>       |                                        ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:320:5: error: ‘locale’ does not name a type
>   320 |     locale::id __timepunct<_CharT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:325:16: error: expected initializer before ‘<’ token
>   325 |     __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:329:16: error: expected initializer before ‘<’ token
>   329 |     __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:334:16: error: expected initializer before ‘<’ token
>   334 |     __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:338:16: error: expected initializer before ‘<’ token
>   338 |     __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
>       |                ^
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:346,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:42:5: error: ‘__timepunct’ does not name a type
>    42 |     __timepunct<_CharT>::__timepunct(size_t __refs)
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:48:5: error: ‘__timepunct’ does not name a type
>    48 |     __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:54:5: error: ‘__timepunct’ does not name a type
>    54 |     __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:80:5: error: ‘__timepunct’ does not name a type
>    80 |     __timepunct<_CharT>::~__timepunct()
>       |     ^~~~~~~~~~~
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.h:368:29: error: ‘locale’ has not been declared
>   368 |     class time_get : public locale::facet, public time_base
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:368:37: error: expected ‘{’ before ‘facet’
>   368 |     class time_get : public locale::facet, public time_base
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:756:5: error: ‘locale’ does not name a type
>   756 |     locale::id time_get<_CharT, _InIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:760:44: error: expected template-name before ‘<’ token
>   760 |     class time_get_byname : public time_get<_CharT, _InIter>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:760:44: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:797:29: error: ‘locale’ has not been declared
>   797 |     class time_put : public locale::facet
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:797:37: error: expected ‘{’ before ‘facet’
>   797 |     class time_put : public locale::facet
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:889:5: error: ‘locale’ does not name a type
>   889 |     locale::id time_put<_CharT, _OutIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:893:44: error: expected template-name before ‘<’ token
>   893 |     class time_put_byname : public time_put<_CharT, _OutIter>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:893:44: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:40: error: ‘locale’ has not been declared
>   954 |     struct __moneypunct_cache : public locale::facet
>       |                                        ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:48: error: expected ‘{’ before ‘facet’
>   954 |     struct __moneypunct_cache : public locale::facet
>       |                                                ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1003:5: error: ‘__moneypunct_cache’ does not name a type
>  1003 |     __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
>       |     ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1024:31: error: ‘locale’ has not been declared
>  1024 |     class moneypunct : public locale::facet, public money_base
>       |                               ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1024:39: error: expected ‘{’ before ‘facet’
>  1024 |     class moneypunct : public locale::facet, public money_base
>       |                                       ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1375:5: error: ‘locale’ does not name a type
>  1375 |     locale::id moneypunct<_CharT, _Intl>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1378:26: error: expected initializer before ‘<’ token
>  1378 |     const bool moneypunct<_CharT, _Intl>::intl;
>       |                          ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1381:5: error: ‘moneypunct’ does not name a type
>  1381 |     moneypunct<char, true>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1384:5: error: ‘moneypunct’ does not name a type
>  1384 |     moneypunct<char, false>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1388:15: error: expected initializer before ‘<’ token
>  1388 |     moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1392:15: error: expected initializer before ‘<’ token
>  1392 |     moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1396:5: error: ‘moneypunct’ does not name a type
>  1396 |     moneypunct<wchar_t, true>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1399:5: error: ‘moneypunct’ does not name a type
>  1399 |     moneypunct<wchar_t, false>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1403:15: error: expected initializer before ‘<’ token
>  1403 |     moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1408:15: error: expected initializer before ‘<’ token
>  1408 |     moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1414:48: error: expected template-name before ‘<’ token
>  1414 |     class moneypunct_byname : public moneypunct<_CharT, _Intl>
>       |                                                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1414:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:1448:33: error: expected initializer before ‘<’ token
>  1448 |     const bool moneypunct_byname<_CharT, _Intl>::intl;
>       |                                 ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1468:30: error: ‘locale’ has not been declared
>  1468 |     class money_get : public locale::facet
>       |                              ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1468:38: error: expected ‘{’ before ‘facet’
>  1468 |     class money_get : public locale::facet
>       |                                      ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1613:5: error: ‘locale’ does not name a type
>  1613 |     locale::id money_get<_CharT, _InIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1629:30: error: ‘locale’ has not been declared
>  1629 |     class money_put : public locale::facet
>       |                              ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1629:38: error: expected ‘{’ before ‘facet’
>  1629 |     class money_put : public locale::facet
>       |                                      ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1778:5: error: ‘locale’ does not name a type
>  1778 |     locale::id money_put<_CharT, _OutIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1815:29: error: ‘locale’ has not been declared
>  1815 |     class messages : public locale::facet, public messages_base
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1815:37: error: expected ‘{’ before ‘facet’
>  1815 |     class messages : public locale::facet, public messages_base
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1984:5: error: ‘locale’ does not name a type
>  1984 |     locale::id messages<_CharT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1988:5: error: ‘string’ does not name a type
>  1988 |     string
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1993:5: error: ‘wstring’ does not name a type
>  1993 |     wstring
>       |     ^~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1999:44: error: expected template-name before ‘<’ token
>  1999 |     class messages_byname : public messages<_CharT>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1999:44: error: expected ‘{’ before ‘<’ token
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2026,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:44:5: error: ‘messages’ does not name a type
>    44 |     messages<_CharT>::messages(size_t __refs)
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:50:5: error: ‘messages’ does not name a type
>    50 |     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:69:14: error: expected nested-name-specifier before ‘messages’
>    69 |     typename messages<_CharT>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:69:22: error: expected initializer before ‘<’ token
>    69 |     typename messages<_CharT>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:79:5: error: ‘messages’ does not name a type
>    79 |     messages<_CharT>::~messages()
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:87:14: error: expected nested-name-specifier before ‘messages’
>    87 |     typename messages<_CharT>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:87:22: error: expected initializer before ‘<’ token
>    87 |     typename messages<_CharT>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:99:13: error: expected initializer before ‘<’ token
>    99 |     messages<_CharT>::do_close(catalog) const
>       |             ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:104:5: error: ‘messages_byname’ does not name a type; did you mean ‘messages_base’?
>   104 |     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
>       |     ^~~~~~~~~~~~~~~
>       |     messages_base
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:131:14: error: expected nested-name-specifier before ‘messages’
>   131 |     typename messages<char>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:131:22: error: expected initializer before ‘<’ token
>   131 |     typename messages<char>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:137:13: error: expected initializer before ‘<’ token
>   137 |     messages<char>::do_close(catalog) const;
>       |             ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:141:14: error: expected nested-name-specifier before ‘messages’
>   141 |     typename messages<wchar_t>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:141:22: error: expected initializer before ‘<’ token
>   141 |     typename messages<wchar_t>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:147:13: error: expected initializer before ‘<’ token
>   147 |     messages<wchar_t>::do_close(catalog) const;
>       |             ^
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2029,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/codecvt.h:72:14: error: ‘locale’ has not been declared
>    72 |     : public locale::facet, public codecvt_base
>       |              ^~~~~~
> /usr/include/c++/11/bits/codecvt.h:72:22: error: expected ‘{’ before ‘facet’
>    72 |     : public locale::facet, public codecvt_base
>       |                      ^~~~~
> /usr/include/c++/11/bits/codecvt.h:278:37: error: expected template-name before ‘<’ token
>   278 |     : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:278:37: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/codecvt.h:337:5: error: ‘locale’ does not name a type
>   337 |     locale::id codecvt<_InternT, _ExternT, _StateT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/codecvt.h:341:11: error: ‘codecvt’ is not a class template
>   341 |     class codecvt<char, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:341:40: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   341 |     class codecvt<char, char, mbstate_t>
>       |                                        ^
> /usr/include/c++/11/bits/codecvt.h:342:37: error: expected template-name before ‘<’ token
>   342 |     : public __codecvt_abstract_base<char, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:404:11: error: ‘codecvt’ is not a class template
>   404 |     class codecvt<wchar_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:404:43: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   404 |     class codecvt<wchar_t, char, mbstate_t>
>       |                                           ^
> /usr/include/c++/11/bits/codecvt.h:405:37: error: expected template-name before ‘<’ token
>   405 |     : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:470:11: error: ‘codecvt’ is not a class template
>   470 |     class codecvt<char16_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:470:44: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   470 |     class codecvt<char16_t, char, mbstate_t>
>       |                                            ^
> /usr/include/c++/11/bits/codecvt.h:471:37: error: expected template-name before ‘<’ token
>   471 |     : public __codecvt_abstract_base<char16_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:527:11: error: ‘codecvt’ is not a class template
>   527 |     class codecvt<char32_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:527:44: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   527 |     class codecvt<char32_t, char, mbstate_t>
>       |                                            ^
> /usr/include/c++/11/bits/codecvt.h:528:37: error: expected template-name before ‘<’ token
>   528 |     : public __codecvt_abstract_base<char32_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:699:42: error: expected template-name before ‘<’ token
>   699 |     class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
>       |                                          ^
> /usr/include/c++/11/bits/codecvt.h:699:42: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/codecvt.h:727:11: error: ‘codecvt_byname’ is not a class template
>   727 |     class codecvt_byname<char16_t, char, mbstate_t>
>       |           ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:727:51: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt_byname’
>   727 |     class codecvt_byname<char16_t, char, mbstate_t>
>       |                                                   ^
> /usr/include/c++/11/bits/codecvt.h:728:21: error: expected template-name before ‘<’ token
>   728 |     : public codecvt<char16_t, char, mbstate_t>
>       |                     ^
> /usr/include/c++/11/bits/codecvt.h:745:11: error: ‘codecvt_byname’ is not a class template
>   745 |     class codecvt_byname<char32_t, char, mbstate_t>
>       |           ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:745:51: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt_byname’
>   745 |     class codecvt_byname<char32_t, char, mbstate_t>
>       |                                                   ^
> /usr/include/c++/11/bits/codecvt.h:746:21: error: expected template-name before ‘<’ token
>   746 |     : public codecvt<char32_t, char, mbstate_t>
>       |                     ^
> /usr/include/c++/11/bits/codecvt.h:805:25: error: ‘codecvt_byname’ is not a class template
>   805 |   extern template class codecvt_byname<char, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:805:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:808:11: error: ‘codecvt’ is not a template function
>   808 |     const codecvt<char, char, mbstate_t>&
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:808:18: error: expected ‘;’ before ‘<’ token
>   808 |     const codecvt<char, char, mbstate_t>&
>       |                  ^
>       |                  ;
> /usr/include/c++/11/bits/codecvt.h:813:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>   813 |     has_facet<codecvt<char, char, mbstate_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:813:14: error: expected ‘;’ before ‘<’ token
>   813 |     has_facet<codecvt<char, char, mbstate_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/codecvt.h:816:25: error: ‘codecvt_byname’ is not a class template
>   816 |   extern template class codecvt_byname<wchar_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:816:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:819:11: error: ‘codecvt’ is not a template function
>   819 |     const codecvt<wchar_t, char, mbstate_t>&
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:819:18: error: expected ‘;’ before ‘<’ token
>   819 |     const codecvt<wchar_t, char, mbstate_t>&
>       |                  ^
>       |                  ;
> /usr/include/c++/11/bits/codecvt.h:824:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>   824 |     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:824:14: error: expected ‘;’ before ‘<’ token
>   824 |     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/codecvt.h:828:25: error: ‘codecvt_byname’ is not a class template
>   828 |   extern template class codecvt_byname<char16_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:828:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:829:25: error: ‘codecvt_byname’ is not a class template
>   829 |   extern template class codecvt_byname<char32_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:829:25: error: template argument required for ‘class codecvt_byname’
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:12: error: ‘__use_cache’ is not a class template
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |            ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:24: error: ‘__moneypunct_cache’ was not declared in this scope; did you mean ‘std::__moneypunct_cache’?
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |                        ^~~~~~~~~~~~~~~~~~
>       |                        std::__moneypunct_cache
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:12: note: ‘std::__moneypunct_cache’ declared here
>   954 |     struct __moneypunct_cache : public locale::facet
>       |            ^~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:12: error: template argument required for ‘struct __use_cache’
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |            ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:58: error: expected unqualified-id before ‘>’ token
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |                                                          ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:69:23: error: expected initializer before ‘<’ token
>    69 |     __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
>       |                       ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:136:7: error: too many template-parameter-lists
>   136 |       money_get<_CharT, _InIter>::
>       |       ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:370:14: error: expected initializer before ‘<’ token
>   370 |     money_get<_CharT, _InIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:383:14: error: expected initializer before ‘<’ token
>   383 |     money_get<_CharT, _InIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:423:7: error: too many template-parameter-lists
>   423 |       money_put<_CharT, _OutIter>::
>       |       ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:592:14: error: expected initializer before ‘<’ token
>   592 |     money_put<_CharT, _OutIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:630:14: error: expected initializer before ‘<’ token
>   630 |     money_put<_CharT, _OutIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:683:5: error: ‘time_base’ does not name a type
>   683 |     time_base::dateorder
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:691:13: error: expected initializer before ‘<’ token
>   691 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:925:13: error: expected initializer before ‘<’ token
>   925 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:968:13: error: expected initializer before ‘<’ token
>   968 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1044:13: error: expected initializer before ‘<’ token
>  1044 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1116:13: error: expected initializer before ‘<’ token
>  1116 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1133:13: error: expected initializer before ‘<’ token
>  1133 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1150:13: error: expected initializer before ‘<’ token
>  1150 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1176:13: error: expected initializer before ‘<’ token
>  1176 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1202:13: error: expected initializer before ‘<’ token
>  1202 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1225:13: error: expected initializer before ‘<’ token
>  1225 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1297:13: error: expected initializer before ‘<’ token
>  1297 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1330:13: error: expected initializer before ‘<’ token
>  1330 |     time_put<_CharT, _OutIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1365:13: error: expected initializer before ‘<’ token
>  1365 |     time_put<_CharT, _OutIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1407:25: error: ‘moneypunct’ is not a class template
>  1407 |   extern template class moneypunct<char, false>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1407:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1408:25: error: ‘moneypunct’ is not a class template
>  1408 |   extern template class moneypunct<char, true>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1408:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1409:25: error: ‘moneypunct_byname’ is not a class template
>  1409 |   extern template class moneypunct_byname<char, false>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1409:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1410:25: error: ‘moneypunct_byname’ is not a class template
>  1410 |   extern template class moneypunct_byname<char, true>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1410:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1411:25: error: ‘__cxx11’ has not been declared
>  1411 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<char>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1411:67: error: expected unqualified-id before ‘<’ token
>  1411 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<char>;
>       |                                                                   ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1412:25: error: ‘__cxx11’ has not been declared
>  1412 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<char>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1412:67: error: expected unqualified-id before ‘<’ token
>  1412 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<char>;
>       |                                                                   ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1413:25: error: ‘__timepunct’ is not a class template
>  1413 |   extern template class __timepunct<char>;
>       |                         ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1413:25: error: template argument required for ‘class __timepunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1414:25: error: ‘time_put’ is not a class template
>  1414 |   extern template class time_put<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1414:25: error: template argument required for ‘class time_put’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1415:25: error: ‘time_put_byname’ is not a class template
>  1415 |   extern template class time_put_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1415:25: error: template argument required for ‘class time_put_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1416:25: error: ‘time_get’ is not a class template
>  1416 |   extern template class time_get<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1416:25: error: explicit instantiation of non-template type ‘std::time_get’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1417:25: error: ‘time_get_byname’ is not a class template
>  1417 |   extern template class time_get_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1417:25: error: explicit instantiation of non-template type ‘std::time_get_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1418:25: error: ‘messages’ is not a class template
>  1418 |   extern template class messages<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1418:25: error: explicit instantiation of non-template type ‘std::messages’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1419:25: error: ‘messages_byname’ is not a class template
>  1419 |   extern template class messages_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1419:25: error: explicit instantiation of non-template type ‘std::messages_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1422:11: error: ‘moneypunct’ is not a template function
>  1422 |     const moneypunct<char, true>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1422:21: error: expected ‘;’ before ‘<’ token
>  1422 |     const moneypunct<char, true>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1426:11: error: ‘moneypunct’ is not a template function
>  1426 |     const moneypunct<char, false>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1426:21: error: expected ‘;’ before ‘<’ token
>  1426 |     const moneypunct<char, false>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1430:11: error: ‘money_put’ is not a template function
>  1430 |     const money_put<char>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1430:20: error: expected ‘;’ before ‘<’ token
>  1430 |     const money_put<char>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1434:11: error: ‘money_get’ is not a template function
>  1434 |     const money_get<char>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1434:20: error: expected ‘;’ before ‘<’ token
>  1434 |     const money_get<char>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1438:11: error: ‘__timepunct’ is not a template function
>  1438 |     const __timepunct<char>&
>       |           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1438:22: error: expected ‘;’ before ‘<’ token
>  1438 |     const __timepunct<char>&
>       |                      ^
>       |                      ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1442:11: error: ‘time_put’ is not a template function
>  1442 |     const time_put<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1442:19: error: expected ‘;’ before ‘<’ token
>  1442 |     const time_put<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1446:11: error: ‘time_get’ is not a template function
>  1446 |     const time_get<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1446:19: error: expected ‘;’ before ‘<’ token
>  1446 |     const time_get<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1450:11: error: ‘messages’ is not a template function
>  1450 |     const messages<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1450:19: error: expected ‘;’ before ‘<’ token
>  1450 |     const messages<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1455:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1455 |     has_facet<moneypunct<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1455:14: error: expected ‘;’ before ‘<’ token
>  1455 |     has_facet<moneypunct<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1459:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1459 |     has_facet<money_put<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1459:14: error: expected ‘;’ before ‘<’ token
>  1459 |     has_facet<money_put<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1463:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1463 |     has_facet<money_get<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1463:14: error: expected ‘;’ before ‘<’ token
>  1463 |     has_facet<money_get<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1467:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1467 |     has_facet<__timepunct<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1467:14: error: expected ‘;’ before ‘<’ token
>  1467 |     has_facet<__timepunct<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1471:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1471 |     has_facet<time_put<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1471:14: error: expected ‘;’ before ‘<’ token
>  1471 |     has_facet<time_put<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1475:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1475 |     has_facet<time_get<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1475:14: error: expected ‘;’ before ‘<’ token
>  1475 |     has_facet<time_get<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1479:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1479 |     has_facet<messages<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1479:14: error: expected ‘;’ before ‘<’ token
>  1479 |     has_facet<messages<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1482:25: error: ‘moneypunct’ is not a class template
>  1482 |   extern template class moneypunct<wchar_t, false>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1482:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1483:25: error: ‘moneypunct’ is not a class template
>  1483 |   extern template class moneypunct<wchar_t, true>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1483:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1484:25: error: ‘moneypunct_byname’ is not a class template
>  1484 |   extern template class moneypunct_byname<wchar_t, false>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1484:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1485:25: error: ‘moneypunct_byname’ is not a class template
>  1485 |   extern template class moneypunct_byname<wchar_t, true>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1485:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1486:25: error: ‘__cxx11’ has not been declared
>  1486 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1486:67: error: expected unqualified-id before ‘<’ token
>  1486 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<wchar_t>;
>       |                                                                   ^
> In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1487:25: error: ‘__cxx11’ has not been declared
>  1487 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1487:67: error: expected unqualified-id before ‘<’ token
>  1487 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<wchar_t>;
>       |                                                                   ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1488:25: error: ‘__timepunct’ is not a class template
>  1488 |   extern template class __timepunct<wchar_t>;
>       |                         ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1488:25: error: template argument required for ‘class __timepunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1489:25: error: ‘time_put’ is not a class template
>  1489 |   extern template class time_put<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1489:25: error: template argument required for ‘class time_put’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1490:25: error: ‘time_put_byname’ is not a class template
>  1490 |   extern template class time_put_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1490:25: error: template argument required for ‘class time_put_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1491:25: error: ‘time_get’ is not a class template
>  1491 |   extern template class time_get<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1491:25: error: explicit instantiation of non-template type ‘std::time_get’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1492:25: error: ‘time_get_byname’ is not a class template
>  1492 |   extern template class time_get_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1492:25: error: explicit instantiation of non-template type ‘std::time_get_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1493:25: error: ‘messages’ is not a class template
>  1493 |   extern template class messages<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1493:25: error: explicit instantiation of non-template type ‘std::messages’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1494:25: error: ‘messages_byname’ is not a class template
>  1494 |   extern template class messages_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1494:25: error: explicit instantiation of non-template type ‘std::messages_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1497:11: error: ‘moneypunct’ is not a template function
>  1497 |     const moneypunct<wchar_t, true>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1497:21: error: expected ‘;’ before ‘<’ token
>  1497 |     const moneypunct<wchar_t, true>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1501:11: error: ‘moneypunct’ is not a template function
>  1501 |     const moneypunct<wchar_t, false>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1501:21: error: expected ‘;’ before ‘<’ token
>  1501 |     const moneypunct<wchar_t, false>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1505:11: error: ‘money_put’ is not a template function
>  1505 |     const money_put<wchar_t>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1505:20: error: expected ‘;’ before ‘<’ token
>  1505 |     const money_put<wchar_t>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1509:11: error: ‘money_get’ is not a template function
>  1509 |     const money_get<wchar_t>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1509:20: error: expected ‘;’ before ‘<’ token
>  1509 |     const money_get<wchar_t>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1513:11: error: ‘__timepunct’ is not a template function
>  1513 |     const __timepunct<wchar_t>&
>       |           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1513:22: error: expected ‘;’ before ‘<’ token
>  1513 |     const __timepunct<wchar_t>&
>       |                      ^
>       |                      ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1517:11: error: ‘time_put’ is not a template function
>  1517 |     const time_put<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1517:19: error: expected ‘;’ before ‘<’ token
>  1517 |     const time_put<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1521:11: error: ‘time_get’ is not a template function
>  1521 |     const time_get<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1521:19: error: expected ‘;’ before ‘<’ token
>  1521 |     const time_get<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1525:11: error: ‘messages’ is not a template function
>  1525 |     const messages<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1525:19: error: expected ‘;’ before ‘<’ token
>  1525 |     const messages<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1530:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1530 |     has_facet<moneypunct<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1530:14: error: expected ‘;’ before ‘<’ token
>  1530 |     has_facet<moneypunct<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1534:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1534 |     has_facet<money_put<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1534:14: error: expected ‘;’ before ‘<’ token
>  1534 |     has_facet<money_put<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1538:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1538 |     has_facet<money_get<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1538:14: error: expected ‘;’ before ‘<’ token
>  1538 |     has_facet<money_get<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1542:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1542 |     has_facet<__timepunct<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1542:14: error: expected ‘;’ before ‘<’ token
>  1542 |     has_facet<__timepunct<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1546:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1546 |     has_facet<time_put<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1546:14: error: expected ‘;’ before ‘<’ token
>  1546 |     has_facet<time_put<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1550:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1550 |     has_facet<time_get<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1550:14: error: expected ‘;’ before ‘<’ token
>  1550 |     has_facet<time_get<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1554:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1554 |     has_facet<messages<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1554:14: error: expected ‘;’ before ‘<’ token
>  1554 |     has_facet<messages<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> In file included from /usr/include/c++/11/locale:43,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__do_str_codecvt(const _InChar*, const _InChar*, _OutStr&, const _Codecvt&, _State&, std::size_t&, _Fn)’:
> /usr/include/c++/11/bits/locale_conv.h:70:7: error: ‘codecvt_base’ has not been declared
>    70 |       codecvt_base::result __result;
>       |       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:76:11: error: ‘__result’ was not declared in this scope
>    76 |           __result = (__cvt.*__fn)(__state, __next, __last, __next,
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:80:14: error: ‘__result’ was not declared in this scope
>    80 |       while (__result == codecvt_base::partial && __next != __last
>       |              ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:80:26: error: ‘codecvt_base’ has not been declared
>    80 |       while (__result == codecvt_base::partial && __next != __last
>       |                          ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:83:23: error: ‘codecvt_base’ has not been declared
>    83 |       if (__result == codecvt_base::error)
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:91:32: error: ‘is_same’ was not declared in this scope
>    91 |       if _GLIBCXX17_CONSTEXPR (is_same<typename _Codecvt::intern_type,
>       |                                ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:91:32: note: suggested alternatives:
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/stl_tree.h:63,
>                  from /usr/include/c++/11/map:60,
>                  from ./core/math/zstatistic.h:21,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/type_traits:614:12: note:   ‘std::is_same’
>   614 |     struct is_same;
>       |            ^~~~~~~
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:148:41: note:   ‘Eigen::internal::is_same’
>   148 | template<typename T, typename U> struct is_same { enum { value = 0 }; };
>       |                                         ^~~~~~~
> In file included from /usr/include/c++/11/locale:43,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/locale_conv.h:91:70: error: expected ‘(’ before ‘,’ token
>    91 |       if _GLIBCXX17_CONSTEXPR (is_same<typename _Codecvt::intern_type,
>       |                                                                      ^
>       |                                                                      (
> /usr/include/c++/11/bits/locale_conv.h:92:70: error: expected ‘(’ before ‘>’ token
>    92 |                                        typename _Codecvt::extern_type>())
>       |                                                                      ^
>       |                                                                      (
> /usr/include/c++/11/bits/locale_conv.h:92:72: error: expected primary-expression before ‘)’ token
>    92 |                                        typename _Codecvt::extern_type>())
>       |                                                                        ^
> /usr/include/c++/11/bits/locale_conv.h:93:25: error: ‘codecvt_base’ has not been declared
>    93 |         if (__result == codecvt_base::noconv)
>       |                         ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:109:22: error: ‘basic_string’ has not been declared
>   109 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                      ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:109:34: error: expected ‘,’ or ‘...’ before ‘<’ token
>   109 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                  ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:113:24: error: ‘codecvt’ does not name a type
>   113 |       using _Codecvt = codecvt<_CharT, char, _State>;
>       |                        ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:115:11: error: ‘codecvt_base’ does not name a type
>   115 |         = codecvt_base::result
>       |           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:118:7: error: ‘_ConvFn’ was not declared in this scope
>   118 |       _ConvFn __fn = &codecvt<_CharT, char, _State>::in;
>       |       ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:48: error: ‘__outstr’ was not declared in this scope
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:58: error: ‘__cvt’ was not declared in this scope
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:65: error: ‘__state’ was not declared in this scope; did you mean ‘_State’?
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                                 ^~~~~~~
>       |                                                                 _State
> /usr/include/c++/11/bits/locale_conv.h:120:31: error: ‘__count’ was not declared in this scope; did you mean ‘count’?
>   120 |                               __count, __fn);
>       |                               ^~~~~~~
>       |                               count
> /usr/include/c++/11/bits/locale_conv.h:120:40: error: ‘__fn’ was not declared in this scope; did you mean ‘__yn’?
>   120 |                               __count, __fn);
>       |                                        ^~~~
>       |                                        __yn
> /usr/include/c++/11/bits/locale_conv.h:119:14: error: there are no arguments to ‘__do_str_codecvt’ that depend on a template parameter, so a declaration of ‘__do_str_codecvt’ must be available [-fpermissive]
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |              ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:127:22: error: ‘basic_string’ has not been declared
>   127 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                      ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:127:34: error: expected ‘,’ or ‘...’ before ‘<’ token
>   127 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                  ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:132:48: error: ‘__outstr’ was not declared in this scope
>   132 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:132:58: error: ‘__cvt’ was not declared in this scope
>   132 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:139:26: error: ‘basic_string’ has not been declared
>   139 |                          basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                          ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:139:38: error: expected ‘,’ or ‘...’ before ‘<’ token
>   139 |                          basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                      ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in_all(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:144:48: error: ‘__outstr’ was not declared in this scope
>   144 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:144:58: error: ‘__cvt’ was not declared in this scope
>   144 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:152:23: error: ‘basic_string’ has not been declared
>   152 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:152:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>   152 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                   ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:156:24: error: ‘codecvt’ does not name a type
>   156 |       using _Codecvt = codecvt<_CharT, char, _State>;
>       |                        ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:158:11: error: ‘codecvt_base’ does not name a type
>   158 |         = codecvt_base::result
>       |           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:161:7: error: ‘_ConvFn’ was not declared in this scope
>   161 |       _ConvFn __fn = &codecvt<_CharT, char, _State>::out;
>       |       ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:48: error: ‘__outstr’ was not declared in this scope
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:58: error: ‘__cvt’ was not declared in this scope
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:65: error: ‘__state’ was not declared in this scope; did you mean ‘_State’?
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                                 ^~~~~~~
>       |                                                                 _State
> /usr/include/c++/11/bits/locale_conv.h:163:31: error: ‘__count’ was not declared in this scope; did you mean ‘count’?
>   163 |                               __count, __fn);
>       |                               ^~~~~~~
>       |                               count
> /usr/include/c++/11/bits/locale_conv.h:163:40: error: ‘__fn’ was not declared in this scope; did you mean ‘__yn’?
>   163 |                               __count, __fn);
>       |                                        ^~~~
>       |                                        __yn
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:170:23: error: ‘basic_string’ has not been declared
>   170 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:170:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>   170 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                   ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:175:49: error: ‘__outstr’ was not declared in this scope
>   175 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                 ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:175:59: error: ‘__cvt’ was not declared in this scope
>   175 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                           ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:182:27: error: ‘basic_string’ has not been declared
>   182 |                           basic_string<char, _Traits, _Alloc>& __outstr,
>       |                           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:182:39: error: expected ‘,’ or ‘...’ before ‘<’ token
>   182 |                           basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                       ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out_all(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:187:49: error: ‘__outstr’ was not declared in this scope
>   187 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                 ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:187:59: error: ‘__cvt’ was not declared in this scope
>   187 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                           ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:230:35: error: ‘allocator’ does not name a type
>   230 |            typename _Wide_alloc = allocator<_Elem>,
>       |                                   ^~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:230:44: error: expected ‘>’ before ‘<’ token
>   230 |            typename _Wide_alloc = allocator<_Elem>,
>       |                                            ^
> /usr/include/c++/11/bits/locale_conv.h:235:15: error: ‘basic_string’ does not name a type
>   235 |       typedef basic_string<char, char_traits<char>, _Byte_alloc>   byte_string;
>       |               ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:236:15: error: ‘basic_string’ does not name a type
>   236 |       typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string;
>       |               ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:238:24: error: ‘wide_string’ has not been declared
>   238 |       typedef typename wide_string::traits_type::int_type          int_type;
>       |                        ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:277:29: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   277 |       wstring_convert(const byte_string& __byte_err,
>       |                             ^~~~~~~~~~~
>       |                             basic_string
> /usr/include/c++/11/bits/locale_conv.h:278:29: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   278 |                       const wide_string& __wide_err = wide_string())
>       |                             ^~~~~~~~~~~
>       |                             wstring
> /usr/include/c++/11/bits/locale_conv.h:295:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   295 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:302:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   302 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:306:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   306 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:313:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   313 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:329:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   329 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:336:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   336 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:342:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   342 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:349:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   349 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:373:7: error: ‘unique_ptr’ does not name a type
>   373 |       unique_ptr<_Codecvt>      _M_cvt;
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:374:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   374 |       byte_string               _M_byte_err_string;
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:375:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   375 |       wide_string               _M_wide_err_string;
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:278:55: error: there are no arguments to ‘wide_string’ that depend on a template parameter, so a declaration of ‘wide_string’ must be available [-fpermissive]
>   278 |                       const wide_string& __wide_err = wide_string())
>       |                                                       ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert()’:
> /usr/include/c++/11/bits/locale_conv.h:241:27: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   241 |       wstring_convert() : _M_cvt(new _Codecvt()) { }
>       |                           ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(_Codecvt*)’:
> /usr/include/c++/11/bits/locale_conv.h:250:43: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   250 |       wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt)
>       |                                           ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:252:14: error: ‘_M_cvt’ was not declared in this scope; did you mean ‘__pcvt’?
>   252 |         if (!_M_cvt)
>       |              ^~~~~~
>       |              __pcvt
> /usr/include/c++/11/bits/locale_conv.h:253:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   253 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(_Codecvt*, std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::state_type)’:
> /usr/include/c++/11/bits/locale_conv.h:265:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   265 |       : _M_cvt(__pcvt), _M_state(__state), _M_with_cvtstate(true)
>       |         ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:267:14: error: ‘_M_cvt’ was not declared in this scope; did you mean ‘__pcvt’?
>   267 |         if (!_M_cvt)
>       |              ^~~~~~
>       |              __pcvt
> /usr/include/c++/11/bits/locale_conv.h:268:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   268 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(const int&, const int&)’:
> /usr/include/c++/11/bits/locale_conv.h:279:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   279 |       : _M_cvt(new _Codecvt),
>       |         ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:280:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_byte_err_string’
>   280 |         _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err),
>       |         ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:280:41: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_wide_err_string’
>   280 |         _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err),
>       |                                         ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:283:14: error: ‘_M_cvt’ was not declared in this scope
>   283 |         if (!_M_cvt)
>       |              ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:284:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   284 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:386:27: error: ‘char_traits’ does not name a type
>   386 |            typename _Tr = char_traits<_Elem>>
>       |                           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:386:38: error: expected ‘>’ before ‘<’ token
>   386 |            typename _Tr = char_traits<_Elem>>
>       |                                      ^
> /usr/include/c++/11/bits/locale_conv.h:387:51: error: expected template-name before ‘<’ token
>   387 |     class wbuffer_convert : public basic_streambuf<_Elem, _Tr>
>       |                                                   ^
> /usr/include/c++/11/bits/locale_conv.h:387:51: error: expected ‘{’ before ‘<’ token
> In file included from ./core/mrtrix.h:34,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/iomanip:56:27: error: ‘ios_base’ does not name a type
>    56 |   struct _Resetiosflags { ios_base::fmtflags _M_mask; };
>       |                           ^~~~~~~~
> /usr/include/c++/11/iomanip:65:10: error: ‘_Resetiosflags’ does not name a type
>    65 |   inline _Resetiosflags
>       |          ^~~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:70:12: error: ‘basic_istream’ does not name a type
>    70 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:78:12: error: ‘basic_ostream’ does not name a type
>    78 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:86:25: error: ‘ios_base’ does not name a type
>    86 |   struct _Setiosflags { ios_base::fmtflags _M_mask; };
>       |                         ^~~~~~~~
> /usr/include/c++/11/iomanip:95:10: error: ‘_Setiosflags’ does not name a type
>    95 |   inline _Setiosflags
>       |          ^~~~~~~~~~~~
> /usr/include/c++/11/iomanip:100:12: error: ‘basic_istream’ does not name a type
>   100 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:108:12: error: ‘basic_ostream’ does not name a type
>   108 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:126:10: error: ‘_Setbase’ does not name a type
>   126 |   inline _Setbase
>       |          ^~~~~~~~
> /usr/include/c++/11/iomanip:131:12: error: ‘basic_istream’ does not name a type
>   131 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:142:12: error: ‘basic_ostream’ does not name a type
>   142 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:164:12: error: ‘_Setfill’ does not name a type
>   164 |     inline _Setfill<_CharT>
>       |            ^~~~~~~~
> /usr/include/c++/11/iomanip:169:12: error: ‘basic_istream’ does not name a type
>   169 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:177:12: error: ‘basic_ostream’ does not name a type
>   177 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:194:10: error: ‘_Setprecision’ does not name a type
>   194 |   inline _Setprecision
>       |          ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:199:12: error: ‘basic_istream’ does not name a type
>   199 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:207:12: error: ‘basic_ostream’ does not name a type
>   207 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:224:10: error: ‘_Setw’ does not name a type
>   224 |   inline _Setw
>       |          ^~~~~
> /usr/include/c++/11/iomanip:229:12: error: ‘basic_istream’ does not name a type
>   229 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:237:12: error: ‘basic_ostream’ does not name a type
>   237 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:258:12: error: ‘_Get_money’ does not name a type
>   258 |     inline _Get_money<_MoneyT>
>       |            ^~~~~~~~~~
> /usr/include/c++/11/iomanip:263:5: error: ‘basic_istream’ does not name a type
>   263 |     basic_istream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:305:12: error: ‘_Put_money’ does not name a type
>   305 |     inline _Put_money<_MoneyT>
>       |            ^~~~~~~~~~
> /usr/include/c++/11/iomanip:310:5: error: ‘basic_ostream’ does not name a type
>   310 |     basic_ostream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:357:12: error: ‘_Put_time’ does not name a type
>   357 |     inline _Put_time<_CharT>
>       |            ^~~~~~~~~
> /usr/include/c++/11/iomanip:362:5: error: ‘basic_ostream’ does not name a type
>   362 |     basic_ostream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:412:12: error: ‘_Get_time’ does not name a type
>   412 |     inline _Get_time<_CharT>
>       |            ^~~~~~~~~
> /usr/include/c++/11/iomanip:417:5: error: ‘basic_istream’ does not name a type
>   417 |     basic_istream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:508:19: error: ‘ostream’ is not a template function
>   508 |   extern template ostream& operator<<(ostream&, _Setfill<char>);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:508:26: error: expected ‘;’ before ‘&’ token
>   508 |   extern template ostream& operator<<(ostream&, _Setfill<char>);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:509:19: error: ‘ostream’ is not a template function
>   509 |   extern template ostream& operator<<(ostream&, _Setiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:509:26: error: expected ‘;’ before ‘&’ token
>   509 |   extern template ostream& operator<<(ostream&, _Setiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:510:19: error: ‘ostream’ is not a template function
>   510 |   extern template ostream& operator<<(ostream&, _Resetiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:510:26: error: expected ‘;’ before ‘&’ token
>   510 |   extern template ostream& operator<<(ostream&, _Resetiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:511:19: error: ‘ostream’ is not a template function
>   511 |   extern template ostream& operator<<(ostream&, _Setbase);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:511:26: error: expected ‘;’ before ‘&’ token
>   511 |   extern template ostream& operator<<(ostream&, _Setbase);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:512:19: error: ‘ostream’ is not a template function
>   512 |   extern template ostream& operator<<(ostream&, _Setprecision);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:512:26: error: expected ‘;’ before ‘&’ token
>   512 |   extern template ostream& operator<<(ostream&, _Setprecision);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:513:19: error: ‘ostream’ is not a template function
>   513 |   extern template ostream& operator<<(ostream&, _Setw);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:513:26: error: expected ‘;’ before ‘&’ token
>   513 |   extern template ostream& operator<<(ostream&, _Setw);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:514:19: error: ‘istream’ is not a template function
>   514 |   extern template istream& operator>>(istream&, _Setfill<char>);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:514:26: error: expected ‘;’ before ‘&’ token
>   514 |   extern template istream& operator>>(istream&, _Setfill<char>);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:515:19: error: ‘istream’ is not a template function
>   515 |   extern template istream& operator>>(istream&, _Setiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:515:26: error: expected ‘;’ before ‘&’ token
>   515 |   extern template istream& operator>>(istream&, _Setiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:516:19: error: ‘istream’ is not a template function
>   516 |   extern template istream& operator>>(istream&, _Resetiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:516:26: error: expected ‘;’ before ‘&’ token
>   516 |   extern template istream& operator>>(istream&, _Resetiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:517:19: error: ‘istream’ is not a template function
>   517 |   extern template istream& operator>>(istream&, _Setbase);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:517:26: error: expected ‘;’ before ‘&’ token
>   517 |   extern template istream& operator>>(istream&, _Setbase);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:518:19: error: ‘istream’ is not a template function
>   518 |   extern template istream& operator>>(istream&, _Setprecision);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:518:26: error: expected ‘;’ before ‘&’ token
>   518 |   extern template istream& operator>>(istream&, _Setprecision);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:519:19: error: ‘istream’ is not a template function
>   519 |   extern template istream& operator>>(istream&, _Setw);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:519:26: error: expected ‘;’ before ‘&’ token
>   519 |   extern template istream& operator>>(istream&, _Setw);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:522:19: error: ‘wostream’ is not a template function
>   522 |   extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:522:27: error: expected ‘;’ before ‘&’ token
>   522 |   extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:523:19: error: ‘wostream’ is not a template function
>   523 |   extern template wostream& operator<<(wostream&, _Setiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:523:27: error: expected ‘;’ before ‘&’ token
>   523 |   extern template wostream& operator<<(wostream&, _Setiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:524:19: error: ‘wostream’ is not a template function
>   524 |   extern template wostream& operator<<(wostream&, _Resetiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:524:27: error: expected ‘;’ before ‘&’ token
>   524 |   extern template wostream& operator<<(wostream&, _Resetiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:525:19: error: ‘wostream’ is not a template function
>   525 |   extern template wostream& operator<<(wostream&, _Setbase);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:525:27: error: expected ‘;’ before ‘&’ token
>   525 |   extern template wostream& operator<<(wostream&, _Setbase);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:526:19: error: ‘wostream’ is not a template function
>   526 |   extern template wostream& operator<<(wostream&, _Setprecision);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:526:27: error: expected ‘;’ before ‘&’ token
>   526 |   extern template wostream& operator<<(wostream&, _Setprecision);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:527:19: error: ‘wostream’ is not a template function
>   527 |   extern template wostream& operator<<(wostream&, _Setw);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:527:27: error: expected ‘;’ before ‘&’ token
>   527 |   extern template wostream& operator<<(wostream&, _Setw);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:528:19: error: ‘wistream’ is not a template function
>   528 |   extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:528:27: error: expected ‘;’ before ‘&’ token
>   528 |   extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:529:19: error: ‘wistream’ is not a template function
>   529 |   extern template wistream& operator>>(wistream&, _Setiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:529:27: error: expected ‘;’ before ‘&’ token
>   529 |   extern template wistream& operator>>(wistream&, _Setiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:530:19: error: ‘wistream’ is not a template function
>   530 |   extern template wistream& operator>>(wistream&, _Resetiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:530:27: error: expected ‘;’ before ‘&’ token
>   530 |   extern template wistream& operator>>(wistream&, _Resetiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:531:19: error: ‘wistream’ is not a template function
>   531 |   extern template wistream& operator>>(wistream&, _Setbase);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:531:27: error: expected ‘;’ before ‘&’ token
>   531 |   extern template wistream& operator>>(wistream&, _Setbase);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:532:19: error: ‘wistream’ is not a template function
>   532 |   extern template wistream& operator>>(wistream&, _Setprecision);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:532:27: error: expected ‘;’ before ‘&’ token
>   532 |   extern template wistream& operator>>(wistream&, _Setprecision);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:533:19: error: ‘wistream’ is not a template function
>   533 |   extern template wistream& operator>>(wistream&, _Setw);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:533:27: error: expected ‘;’ before ‘&’ token
>   533 |   extern template wistream& operator>>(wistream&, _Setw);
>       |                           ^
>       |                           ;
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:112:7: error: ‘vector’ does not name a type
>   112 |       vector<std::string> description;
>       |       ^~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const string&)’:
> ./core/exception.h:85:9: error: ‘description’ was not declared in this scope
>    85 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const MR::Exception&, const string&)’:
> ./core/exception.h:88:9: error: class ‘MR::Exception’ does not have any field named ‘description’
>    88 |         description (previous_exception.description) {
>       |         ^~~~~~~~~~~
> ./core/exception.h:88:41: error: ‘const class MR::Exception’ has no member named ‘description’
>    88 |         description (previous_exception.description) {
>       |                                         ^~~~~~~~~~~
> ./core/exception.h:89:9: error: ‘description’ was not declared in this scope
>    89 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘std::size_t MR::Exception::num() const’:
> ./core/exception.h:97:16: error: ‘description’ was not declared in this scope
>    97 |         return description.size();
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘const string& MR::Exception::operator[](std::size_t) const’:
> ./core/exception.h:100:16: error: ‘description’ was not declared in this scope
>   100 |         return description[n];
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const string&)’:
> ./core/exception.h:103:9: error: ‘description’ was not declared in this scope
>   103 |         description.push_back (s);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const MR::Exception&)’:
> ./core/exception.h:106:25: error: ‘const class MR::Exception’ has no member named ‘description’
>   106 |         for (auto s : e.description)
>       |                         ^~~~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:115:50: error: expected class-name before ‘{’ token
>   115 |   class InvalidImageException : public Exception { NOMEMALIGN
>       |                                                  ^
> ./core/exception.h:118:36: error: ‘Exception’ does not name a type
>   118 |       InvalidImageException (const Exception& previous_exception, const std::string& msg)
>       |                                    ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const string&)’:
> ./core/exception.h:117:56: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   117 |       InvalidImageException (const std::string& msg) : Exception(msg) {}
>       |                                                        ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const int&, const string&)’:
> ./core/exception.h:119:11: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   119 |         : Exception(previous_exception, msg) {}
>       |           ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:123:44: error: expected class-name before ‘{’ token
>   123 |   class CancelException : public Exception { NOMEMALIGN
>       |                                            ^
> ./core/exception.h: In constructor ‘MR::CancelException::CancelException()’:
> ./core/exception.h:125:28: error: class ‘MR::CancelException’ does not have any field named ‘Exception’
>   125 |       CancelException () : Exception ("operation cancelled by user") { }
>       |                            ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:128:41: error: ‘Exception’ does not name a type
>   128 |   void display_exception_cmdline (const Exception& E, int log_level);
>       |                                         ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::LogLevelLatch::LogLevelLatch(int)’:
> ./core/exception.h:137:23: error: ‘App’ has not been declared
>   137 |           prev_level (App::log_level)
>       |                       ^~~
> ./core/exception.h:139:9: error: ‘App’ has not been declared
>   139 |         App::log_level = new_level;
>       |         ^~~
> ./core/exception.h: In destructor ‘MR::LogLevelLatch::~LogLevelLatch()’:
> ./core/exception.h:142:9: error: ‘App’ has not been declared
>   142 |         App::log_level = prev_level;
>       |         ^~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:64:12: error: ‘max_digits’ is not a class template
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:64:91: error: redeclared with 1 template parameter
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |                                                                                           ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:12: error: ‘max_digits’ is not a class template
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:108: error: redeclared with 1 template parameter
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                            ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:74:12: error: ‘max_digits’ is not a class template
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:74:163: error: redeclared with 1 template parameter
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                                                                                   ^
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h: In function ‘std::string Eigen::unquote(const string&)’:
> ./core/mrtrix.h:149:76: error: definition of ‘auto Eigen::unquote(const string&)::<lambda>::operator()(const char&) const’ is not in namespace enclosing ‘Eigen::unquote(const string&)::<lambda>’ [-fpermissive]
>   149 |     if (std::none_of (substring.begin(), substring.end(), [] (const char& c) { return c == '\"'; }))
>       |                                                                            ^
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:173:3: error: ‘vector’ does not name a type
>   173 |   vector<std::string> split (
>       |   ^~~~~~
> ./core/mrtrix.h:179:10: error: ‘vector’ does not name a type
>   179 |   inline vector<std::string> split_lines (
>       |          ^~~~~~
> ./core/mrtrix.h: In function ‘std::size_t Eigen::is_dash(const string&)’:
> ./core/mrtrix.h:227:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   227 |     size_t nbytes = char_is_dash (arg.c_str());
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘bool Eigen::consume_dash(const char*&)’:
> ./core/mrtrix.h:238:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   238 |     size_t nbytes = char_is_dash (arg);
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘std::string Eigen::str(const T&, int)’:
> ./core/mrtrix.h:252:14: error: ‘max_digits’ was not declared in this scope; did you mean ‘MR::max_digits’?
>   252 |     else if (max_digits<T>::value())
>       |              ^~~~~~~~~~
>       |              MR::max_digits
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:59:12: note: ‘MR::max_digits’ declared here
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:252:26: error: expected primary-expression before ‘>’ token
>   252 |     else if (max_digits<T>::value())
>       |                          ^
> ./core/mrtrix.h:252:29: error: ‘::value’ has not been declared
>   252 |     else if (max_digits<T>::value())
>       |                             ^~~~~
> ./core/mrtrix.h:253:37: error: expected primary-expression before ‘>’ token
>   253 |       stream.precision (max_digits<T>::value());
>       |                                     ^
> ./core/mrtrix.h:253:40: error: ‘::value’ has not been declared
>   253 |       stream.precision (max_digits<T>::value());
>       |                                        ^~~~~
> ./core/mrtrix.h:256:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   256 |       throw Exception (std::string("error converting type \"") + typeid(T).name() + "\" value to string");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: In function ‘T Eigen::to(const string&)’:
> ./core/mrtrix.h:262:33: error: there are no arguments to ‘strip’ that depend on a template parameter, so a declaration of ‘strip’ must be available [-fpermissive]
>   262 |     const std::string stripped (strip (string));
>       |                                 ^~~~~
> ./core/mrtrix.h:268:37: error: there are no arguments to ‘lowercase’ that depend on a template parameter, so a declaration of ‘lowercase’ must be available [-fpermissive]
>   268 |         const std::string lstring = lowercase (stripped);
>       |                                     ^~~~~~~~~
> ./core/mrtrix.h:278:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   278 |       throw Exception ("error converting string \"" + string + "\" to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:280:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   280 |       throw Exception ("incomplete use of string \"" + string + "\" in conversion to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:285:29: error: expected initializer before ‘<’ token
>   285 |   template <> inline bool to<bool> (const std::string& string)
>       |                             ^
> ./core/mrtrix.h:295:37: error: expected initializer before ‘<’ token
>   295 |   template <> inline std::string str<cfloat> (const cfloat& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:308:22: error: ‘cfloat’ does not name a type
>   308 |   template <> inline cfloat to<cfloat> (const std::string& string)
>       |                      ^~~~~~
> ./core/mrtrix.h:353:37: error: expected initializer before ‘<’ token
>   353 |   template <> inline std::string str<cdouble> (const cdouble& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:366:22: error: ‘cdouble’ does not name a type
>   366 |   template <> inline cdouble to<cdouble> (const std::string& string)
>       |                      ^~~~~~~
> ./core/mrtrix.h:417:3: error: ‘vector’ does not name a type
>   417 |   vector<default_type> parse_floats (const std::string& spec);
>       |   ^~~~~~
> ./core/mrtrix.h:422:3: error: ‘vector’ does not name a type
>   422 |   vector<IntType> parse_ints (const std::string& spec, const IntType last = std::numeric_limits<IntType>::max())
>       |   ^~~~~~
> ./core/mrtrix.h:498:34: error: ‘vector’ does not name a type
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:498:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:501:9: error: ‘V’ was not declared in this scope
>   501 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:503:11: error: ‘V’ was not declared in this scope
>   503 |     ret = V[0];
>       |           ^
> ./core/mrtrix.h:504:10: error: ‘vector’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |          ^~~~~~
> ./core/mrtrix.h:504:10: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:504:28: error: expected primary-expression before ‘>’ token
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                            ^
> ./core/mrtrix.h:504:31: error: ‘::const_iterator’ has not been declared
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                               ^~~~~~~~~~~~~~
> ./core/mrtrix.h:504:64: error: ‘i’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                                ^
> ./core/mrtrix.h:505:14: error: ‘delimiter’ was not declared in this scope
>   505 |       ret += delimiter + *i;
>       |              ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:510:34: error: ‘vector’ does not name a type
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:510:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:513:9: error: ‘V’ was not declared in this scope
>   513 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:515:15: error: ‘V’ was not declared in this scope
>   515 |     ret = str(V[0]);
>       |               ^
> ./core/mrtrix.h:515:11: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   515 |     ret = str(V[0]);
>       |           ^~~
> ./core/mrtrix.h:516:25: error: expected ‘;’ before ‘<’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                         ^
>       |                         ;
> ./core/mrtrix.h:516:25: error: expected primary-expression before ‘<’ token
> ./core/mrtrix.h:516:27: error: expected primary-expression before ‘>’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                           ^
> ./core/mrtrix.h:516:30: error: ‘::const_iterator’ has not been declared
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                              ^~~~~~~~~~~~~~
> ./core/mrtrix.h:516:44: error: expected ‘;’ before ‘i’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                            ^~
>       |                                            ;
> ./core/mrtrix.h:516:45: error: ‘i’ was not declared in this scope
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                             ^
> ./core/mrtrix.h:516:61: error: expected ‘)’ before ‘;’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |         ~                                                   ^
>       |                                                             )
> ./core/mrtrix.h:516:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |     ^~~
> ./core/mrtrix.h:516:63: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                               ^
> ./core/mrtrix.h:516:63: error: ‘i’ was not declared in this scope
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: At global scope:
> ./core/cmdline_option.h:65:15: error: ‘ArgFlags’ does not name a type
>    65 |     constexpr ArgFlags None = 0;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:66:15: error: ‘ArgFlags’ does not name a type
>    66 |     constexpr ArgFlags Optional = 0x1;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:67:15: error: ‘ArgFlags’ does not name a type
>    67 |     constexpr ArgFlags AllowMultiple = 0x2;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:122:9: error: ‘ArgType’ does not name a type
>   122 |         ArgType  type;
>       |         ^~~~~~~
> ./core/cmdline_option.h:124:9: error: ‘ArgFlags’ does not name a type
>   124 |         ArgFlags flags;
>       |         ^~~~~~~~
> ./core/cmdline_option.h:133:13: error: ‘default_type’ does not name a type
>   133 |             default_type min, max;
>       |             ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:206:37: error: ‘default_type’ does not name a type
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:207:37: error: ‘default_type’ does not name a type
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:206:77: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                             ^~~~~~~~~~~~
>       |                                                                             MR::default_type
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:206:89: error: template argument 1 is invalid
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                                         ^
> ./core/cmdline_option.h:207:76: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                            ^~~~~~~~~~~~
>       |                                                                            MR::default_type
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:207:88: error: template argument 1 is invalid
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                                        ^
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In constructor ‘MR::App::Argument::Argument(const char*, std::string)’:
> ./core/cmdline_option.h:112:42: error: class ‘MR::App::Argument’ does not have any field named ‘type’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                          ^~~~
> ./core/cmdline_option.h:112:48: error: ‘Undefined’ was not declared in this scope; did you mean ‘MR::App::Undefined’?
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                ^~~~~~~~~
>       |                                                MR::App::Undefined
> ./core/cmdline_option.h:45:7: note: ‘MR::App::Undefined’ declared here
>    45 |       Undefined,
>       |       ^~~~~~~~~
> ./core/cmdline_option.h:112:60: error: class ‘MR::App::Argument’ does not have any field named ‘flags’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                            ^~~~~
> ./core/cmdline_option.h:112:67: error: ‘None’ was not declared in this scope
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                                   ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::optional()’:
> ./core/cmdline_option.h:154:11: error: ‘flags’ was not declared in this scope
>   154 |           flags |= Optional;
>       |           ^~~~~
> ./core/cmdline_option.h:154:20: error: ‘Optional’ was not declared in this scope; did you mean ‘optional’?
>   154 |           flags |= Optional;
>       |                    ^~~~~~~~
>       |                    optional
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::allow_multiple()’:
> ./core/cmdline_option.h:161:11: error: ‘flags’ was not declared in this scope
>   161 |           flags |= AllowMultiple;
>       |           ^~~~~
> ./core/cmdline_option.h:161:20: error: ‘AllowMultiple’ was not declared in this scope; did you mean ‘allow_multiple’?
>   161 |           flags |= AllowMultiple;
>       |                    ^~~~~~~~~~~~~
>       |                    allow_multiple
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_text()’:
> ./core/cmdline_option.h:168:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   168 |           type = Text;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:168:18: error: ‘Text’ was not declared in this scope; did you mean ‘MR::App::Text’?
>   168 |           type = Text;
>       |                  ^~~~
>       |                  MR::App::Text
> ./core/cmdline_option.h:46:7: note: ‘MR::App::Text’ declared here
>    46 |       Text,
>       |       ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_in()’:
> ./core/cmdline_option.h:175:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   175 |           type = ImageIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:175:18: error: ‘ImageIn’ was not declared in this scope; did you mean ‘MR::App::ImageIn’?
>   175 |           type = ImageIn;
>       |                  ^~~~~~~
>       |                  MR::App::ImageIn
> ./core/cmdline_option.h:55:7: note: ‘MR::App::ImageIn’ declared here
>    55 |       ImageIn,
>       |       ^~~~~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_out()’:
> ./core/cmdline_option.h:182:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   182 |           type = ImageOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:182:18: error: ‘ImageOut’ was not declared in this scope; did you mean ‘MR::App::ImageOut’?
>   182 |           type = ImageOut;
>       |                  ^~~~~~~~
>       |                  MR::App::ImageOut
> ./core/cmdline_option.h:56:7: note: ‘MR::App::ImageOut’ declared here
>    56 |       ImageOut,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_integer(int64_t, int64_t)’:
> ./core/cmdline_option.h:190:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   190 |           type = Integer;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:190:18: error: ‘Integer’ was not declared in this scope; did you mean ‘MR::App::Integer’?
>   190 |           type = Integer;
>       |                  ^~~~~~~
>       |                  MR::App::Integer
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:48:7: note: ‘MR::App::Integer’ declared here
>    48 |       Integer,
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_bool()’:
> ./core/cmdline_option.h:200:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   200 |           type = Boolean;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:200:18: error: ‘Boolean’ was not declared in this scope; did you mean ‘MR::App::Boolean’?
>   200 |           type = Boolean;
>       |                  ^~~~~~~
>       |                  MR::App::Boolean
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:47:7: note: ‘MR::App::Boolean’ declared here
>    47 |       Boolean,
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_float(int, int)’:
> ./core/cmdline_option.h:209:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   209 |           type = Float;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:209:18: error: ‘Float’ was not declared in this scope; did you mean ‘MR::App::Float’?
>   209 |           type = Float;
>       |                  ^~~~~
>       |                  MR::App::Float
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:49:7: note: ‘MR::App::Float’ declared here
>    49 |       Float,
>       |       ^~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:210:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘min’
>   210 |           limits.f.min = min;
>       |                    ^~~
> ./core/cmdline_option.h:211:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘max’
>   211 |           limits.f.max = max;
>       |                    ^~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_choice(const char* const*)’:
> ./core/cmdline_option.h:228:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   228 |           type = Choice;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:228:18: error: ‘Choice’ was not declared in this scope; did you mean ‘MR::App::Choice’?
>   228 |           type = Choice;
>       |                  ^~~~~~
>       |                  MR::App::Choice
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:54:7: note: ‘MR::App::Choice’ declared here
>    54 |       Choice,
>       |       ^~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_in()’:
> ./core/cmdline_option.h:236:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   236 |           type = ArgFileIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:236:18: error: ‘ArgFileIn’ was not declared in this scope; did you mean ‘MR::App::ArgFileIn’?
>   236 |           type = ArgFileIn;
>       |                  ^~~~~~~~~
>       |                  MR::App::ArgFileIn
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:50:7: note: ‘MR::App::ArgFileIn’ declared here
>    50 |       ArgFileIn,
>       |       ^~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_out()’:
> ./core/cmdline_option.h:243:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   243 |           type = ArgFileOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:243:18: error: ‘ArgFileOut’ was not declared in this scope; did you mean ‘MR::App::ArgFileOut’?
>   243 |           type = ArgFileOut;
>       |                  ^~~~~~~~~~
>       |                  MR::App::ArgFileOut
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:51:7: note: ‘MR::App::ArgFileOut’ declared here
>    51 |       ArgFileOut,
>       |       ^~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_in()’:
> ./core/cmdline_option.h:250:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   250 |           type = ArgDirectoryIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:250:18: error: ‘ArgDirectoryIn’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryIn’?
>   250 |           type = ArgDirectoryIn;
>       |                  ^~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryIn
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:52:7: note: ‘MR::App::ArgDirectoryIn’ declared here
>    52 |       ArgDirectoryIn,
>       |       ^~~~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_out()’:
> ./core/cmdline_option.h:257:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   257 |           type = ArgDirectoryOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:257:18: error: ‘ArgDirectoryOut’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryOut’?
>   257 |           type = ArgDirectoryOut;
>       |                  ^~~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryOut
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:53:7: note: ‘MR::App::ArgDirectoryOut’ declared here
>    53 |       ArgDirectoryOut,
>       |       ^~~~~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_int()’:
> ./core/cmdline_option.h:264:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   264 |           type = IntSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:264:18: error: ‘IntSeq’ was not declared in this scope; did you mean ‘MR::App::IntSeq’?
>   264 |           type = IntSeq;
>       |                  ^~~~~~
>       |                  MR::App::IntSeq
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:57:7: note: ‘MR::App::IntSeq’ declared here
>    57 |       IntSeq,
>       |       ^~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_float()’:
> ./core/cmdline_option.h:271:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   271 |           type = FloatSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:271:18: error: ‘FloatSeq’ was not declared in this scope; did you mean ‘MR::App::FloatSeq’?
>   271 |           type = FloatSeq;
>       |                  ^~~~~~~~
>       |                  MR::App::FloatSeq
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:58:7: note: ‘MR::App::FloatSeq’ declared here
>    58 |       FloatSeq,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_in()’:
> ./core/cmdline_option.h:278:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   278 |           type = TracksIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:278:18: error: ‘TracksIn’ was not declared in this scope; did you mean ‘MR::App::TracksIn’?
>   278 |           type = TracksIn;
>       |                  ^~~~~~~~
>       |                  MR::App::TracksIn
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:59:7: note: ‘MR::App::TracksIn’ declared here
>    59 |       TracksIn,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_out()’:
> ./core/cmdline_option.h:285:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   285 |           type = TracksOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:285:18: error: ‘TracksOut’ was not declared in this scope; did you mean ‘MR::App::TracksOut’?
>   285 |           type = TracksOut;
>       |                  ^~~~~~~~~
>       |                  MR::App::TracksOut
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:60:7: note: ‘MR::App::TracksOut’ declared here
>    60 |       TracksOut,
>       |       ^~~~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_various()’:
> ./core/cmdline_option.h:292:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   292 |           type = Various;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:292:18: error: ‘Various’ was not declared in this scope; did you mean ‘MR::App::Various’?
>   292 |           type = Various;
>       |                  ^~~~~~~
>       |                  MR::App::Various
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:61:7: note: ‘MR::App::Various’ declared here
>    61 |       Various
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h: At global scope:
> ./core/cmdline_option.h:343:33: error: expected template-name before ‘<’ token
>   343 |     class Option : public vector<Argument> { NOMEMALIGN
>       |                                 ^
> ./core/cmdline_option.h:343:33: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:343:33: error: expected unqualified-id before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected template-name before ‘<’ token
>   418 |     class OptionGroup : public vector<Option> { NOMEMALIGN
>       |                                      ^
> ./core/cmdline_option.h:418:38: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected unqualified-id before ‘<’ token
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘bool Eigen::exists(const string&)’:
> ./core/file/path.h:99:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    99 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘bool Eigen::is_dir(const string&)’:
> ./core/file/path.h:115:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   115 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘bool Eigen::is_file(const string&)’:
> ./core/file/path.h:125:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   125 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)’:
> ./core/file/path.h:140:57: error: definition of ‘auto Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>’ [-fpermissive]
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:140:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:136:17: note: ‘Eigen::has_suffix’ declared here
>   136 |     inline bool has_suffix (const std::string &name, const std::initializer_list<const std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: At global scope:
> ./core/file/path.h:143:60: error: ‘vector’ does not name a type
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                            ^~~~~~
> ./core/file/path.h:143:66: error: expected ‘,’ or ‘...’ before ‘<’ token
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                                  ^
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, int)’:
> ./core/file/path.h:145:27: error: ‘suffix_list’ was not declared in this scope
>   145 |       return std::any_of (suffix_list.begin(),
>       |                           ^~~~~~~~~~~
> ./core/file/path.h:147:57: error: definition of ‘auto Eigen::has_suffix(const string&, int)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, int)::<lambda>’ [-fpermissive]
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:147:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:143:17: note: ‘Eigen::has_suffix’ declared here
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: In function ‘bool Eigen::is_mrtrix_image(const string&)’:
> ./core/file/path.h:153:9: error: ‘Path’ has not been declared
>   153 |         Path::has_suffix (name, {".mif", ".mih", ".mif.gz"});
>       |         ^~~~
> ./core/file/path.h: In function ‘std::string Eigen::cwd()’:
> ./core/file/path.h:165:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   165 |           throw Exception ("failed to get current working directory!");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘std::string Eigen::home()’:
> ./core/file/path.h:175:15: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   175 |         throw Exception (HOME_ENV " environment variable is not set!");
>       |               ^~~~~~~~~
>       |               MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In constructor ‘MR::Path::Dir::Dir(const string&)’:
> ./core/file/path.h:184:19: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   184 |             throw Exception ("error opening folder " + name + ": " + strerror (errno));
>       |                   ^~~~~~~~~
>       |                   MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h: In function ‘char Eigen::delimiter(const string&)’:
> ./core/file/path.h:216:11: error: ‘Path’ has not been declared
>   216 |       if (Path::has_suffix (filename, ".tsv"))
>       |           ^~~~
> ./core/file/path.h:218:16: error: ‘Path’ has not been declared
>   218 |       else if (Path::has_suffix (filename, ".csv"))
>       |                ^~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h: At global scope:
> ./core/app.h:62:46: error: expected primary-expression before ‘type’
>    62 |     const char* argtype_description (ArgType type);
>       |                                              ^~~~
> ./core/app.h:76:38: error: expected template-name before ‘<’ token
>    76 |     class Description : public vector<const char*> { NOMEMALIGN
>       |                                      ^
> ./core/app.h:76:38: error: expected ‘{’ before ‘<’ token
> ./core/app.h:76:38: error: expected unqualified-id before ‘<’ token
> ./core/app.h:110:38: error: expected template-name before ‘<’ token
>   110 |     class ExampleList : public vector<Example> { NOMEMALIGN
>       |                                      ^
> ./core/app.h:110:38: error: expected ‘{’ before ‘<’ token
> ./core/app.h:110:38: error: expected unqualified-id before ‘<’ token
> ./core/app.h:124:39: error: expected template-name before ‘<’ token
>   124 |     class ArgumentList : public vector<Argument> { NOMEMALIGN
>       |                                       ^
> ./core/app.h:124:39: error: expected ‘{’ before ‘<’ token
> ./core/app.h:124:39: error: expected unqualified-id before ‘<’ token
> ./core/app.h:139:37: error: expected template-name before ‘<’ token
>   139 |     class OptionList : public vector<OptionGroup> { NOMEMALIGN
>       |                                     ^
> ./core/app.h:139:37: error: expected ‘{’ before ‘<’ token
> ./core/app.h:139:37: error: expected unqualified-id before ‘<’ token
> ./core/app.h: In function ‘void Eigen::check_overwrite(const string&)’:
> ./core/app.h:170:11: error: ‘Path’ has not been declared
>   170 |       if (Path::exists (name) && !overwrite_files) {
>       |           ^~~~
> ./core/app.h:170:35: error: ‘overwrite_files’ was not declared in this scope; did you mean ‘Eigen::overwrite_files’?
>   170 |       if (Path::exists (name) && !overwrite_files) {
>       |                                   ^~~~~~~~~~~~~~~
>       |                                   Eigen::overwrite_files
> ./core/app.h:49:17: note: ‘Eigen::overwrite_files’ declared here
>    49 |     extern bool overwrite_files;
>       |                 ^~~~~~~~~~~~~~~
> ./core/app.h:171:13: error: ‘check_overwrite_files_func’ was not declared in this scope; did you mean ‘Eigen::check_overwrite_files_func’?
>   171 |         if (check_overwrite_files_func)
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
>       |             Eigen::check_overwrite_files_func
> ./core/app.h:50:19: note: ‘Eigen::check_overwrite_files_func’ declared here
>    50 |     extern void (*check_overwrite_files_func) (const std::string& name);
>       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
> ./core/app.h:174:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   174 |           throw Exception ("output file \"" + name + "\" already exists (use -force option to force overwrite)");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h: At global scope:
> ./core/app.h:200:11: error: ‘Option’ does not name a type
>   200 |     const Option* match_option (const char* stub);
>       |           ^~~~~~
> ./core/app.h:217:9: error: ‘default_type’ does not name a type
>   217 |         default_type as_float () const;
>       |         ^~~~~~~~~~~~
> ./core/app.h:219:9: error: ‘vector’ does not name a type
>   219 |         vector<int32_t> as_sequence_int () const {
>       |         ^~~~~~
> ./core/app.h:226:9: error: ‘vector’ does not name a type
>   226 |         vector<uint32_t> as_sequence_uint () const {
>       |         ^~~~~~
> ./core/app.h:233:9: error: ‘vector’ does not name a type
>   233 |         vector<default_type> as_sequence_float () const {
>       |         ^~~~~~
> ./core/app.h:249:18: error: ‘vector’ does not name a type
>   249 |         operator vector<int32_t> () const { return as_sequence_int(); }
>       |                  ^~~~~~
> ./core/app.h:250:18: error: ‘vector’ does not name a type
>   250 |         operator vector<uint32_t> () const { return as_sequence_uint(); }
>       |                  ^~~~~~
> ./core/app.h:251:18: error: ‘vector’ does not name a type
>   251 |         operator vector<default_type> () const { return as_sequence_float(); }
>       |                  ^~~~~~
> ./core/app.h:256:15: error: ‘Option’ does not name a type
>   256 |         const Option* opt;
>       |               ^~~~~~
> ./core/app.h:257:15: error: ‘Argument’ does not name a type
>   257 |         const Argument* arg;
>       |               ^~~~~~~~
> ./core/app.h:260:31: error: ‘Option’ does not name a type
>   260 |         ParsedArgument (const Option* option, const Argument* argument, const char* text) :
>       |                               ^~~~~~
> ./core/app.h:260:53: error: ‘Argument’ does not name a type
>   260 |         ParsedArgument (const Option* option, const Argument* argument, const char* text) :
>       |                                                     ^~~~~~~~
> ./core/app.h:265:21: error: ‘Exception’ has not been declared
>   265 |         void error (Exception& e) const {
>       |                     ^~~~~~~~~
> ./core/app.h: In member function ‘bool MR::App::ParsedArgument::as_bool() const’:
> ./core/app.h:214:40: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                        ^~
>       |                                        Eigen::to
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:214:43: error: expected primary-expression before ‘bool’
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                           ^~~~
> ./core/app.h:214:43: error: expected ‘;’ before ‘bool’
> ./core/app.h:214:47: error: expected unqualified-id before ‘>’ token
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                               ^
> ./core/app.h: In member function ‘MR::App::ParsedArgument::operator float() const’:
> ./core/app.h:247:42: error: ‘as_float’ was not declared in this scope; did you mean ‘cfloat’?
>   247 |         operator float () const { return as_float(); }
>       |                                          ^~~~~~~~
>       |                                          cfloat
> ./core/app.h: In member function ‘MR::App::ParsedArgument::operator double() const’:
> ./core/app.h:248:43: error: ‘as_float’ was not declared in this scope; did you mean ‘cfloat’?
>   248 |         operator double () const { return as_float(); }
>       |                                           ^~~~~~~~
>       |                                           cfloat
> ./core/app.h: In constructor ‘MR::App::ParsedArgument::ParsedArgument(const int*, const int*, const char*)’:
> ./core/app.h:261:11: error: class ‘MR::App::ParsedArgument’ does not have any field named ‘opt’
>   261 |           opt (option), arg (argument), p (text) {
>       |           ^~~
> ./core/app.h:261:25: error: class ‘MR::App::ParsedArgument’ does not have any field named ‘arg’
>   261 |           opt (option), arg (argument), p (text) {
>       |                         ^~~
> ./core/app.h: In member function ‘void MR::App::ParsedArgument::error(int&) const’:
> ./core/app.h:268:15: error: ‘opt’ was not declared in this scope
>   268 |           if (opt) msg += std::string ("\" for option \"") + opt->id + "\"";
>       |               ^~~
> ./core/app.h:269:63: error: overloaded function with no contextual type information
>   269 |           else msg += std::string ("\" for argument \"") + arg->id + "\"";
>       |                                                               ^~
> ./core/app.h:270:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   270 |           throw Exception (e, msg);
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h: At global scope:
> ./core/app.h:288:29: error: ‘Option’ does not name a type
>   288 |         ParsedOption (const Option* option, const char* const* arguments) :
>       |                             ^~~~~~
> ./core/app.h:313:15: error: ‘Option’ does not name a type
>   313 |         const Option* opt;
>       |               ^~~~~~
> ./core/app.h:317:15: error: ‘ParsedArgument’ does not name a type
>   317 |         const ParsedArgument operator[] (size_t num) const {
>       |               ^~~~~~~~~~~~~~
> ./core/app.h: In constructor ‘MR::App::ParsedOption::ParsedOption(const int*, const char* const*)’:
> ./core/app.h:289:13: error: class ‘MR::App::ParsedOption’ does not have any field named ‘opt’
>   289 |             opt (option), args (arguments)
>       |             ^~~
> ./core/app.h:291:43: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   291 |           for (size_t i = 0; i != option->size(); ++i) {
>       |                                           ^~~~
> ./core/app.h:293:18: error: ‘consume_dash’ was not declared in this scope; did you mean ‘Eigen::consume_dash’?
>   293 |             if (!consume_dash (p))
>       |                  ^~~~~~~~~~~~
>       |                  Eigen::consume_dash
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:236:15: note: ‘Eigen::consume_dash’ declared here
>   236 |   inline bool consume_dash (const char*& arg)
>       |               ^~~~~~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:295:28: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                            ^
> ./core/app.h:295:40: error: ‘ImageIn’ was not declared in this scope; did you mean ‘MR::App::ImageIn’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                        ^~~~~~~
>       |                                        MR::App::ImageIn
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:55:7: note: ‘MR::App::ImageIn’ declared here
>    55 |       ImageIn,
>       |       ^~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:295:60: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                            ^
> ./core/app.h:295:72: error: ‘ImageOut’ was not declared in this scope; did you mean ‘MR::App::ImageOut’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                                        ^~~~~~~~
>       |                                                                        MR::App::ImageOut
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:56:7: note: ‘MR::App::ImageOut’ declared here
>    56 |       ImageOut,
>       |       ^~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:295:86: error: ‘is_dash’ was not declared in this scope; did you mean ‘Eigen::is_dash’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                                                      ^~~~~~~
>       |                                                                                      Eigen::is_dash
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:225:17: note: ‘Eigen::is_dash’ declared here
>   225 |   inline size_t is_dash (const std::string& arg)
>       |                 ^~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:297:26: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                          ^
> ./core/app.h:297:38: error: ‘Integer’ was not declared in this scope; did you mean ‘MR::App::Integer’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                      ^~~~~~~
>       |                                      MR::App::Integer
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:48:7: note: ‘MR::App::Integer’ declared here
>    48 |       Integer,
>       |       ^~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:297:58: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                          ^
> ./core/app.h:297:70: error: ‘Float’ was not declared in this scope; did you mean ‘MR::App::Float’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                      ^~~~~
>       |                                                                      MR::App::Float
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:49:7: note: ‘MR::App::Float’ declared here
>    49 |       Float,
>       |       ^~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:297:88: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                                        ^
> ./core/app.h:297:100: error: ‘IntSeq’ was not declared in this scope; did you mean ‘MR::App::IntSeq’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                                                    ^~~~~~
>       |                                                                                                    MR::App::IntSeq
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:57:7: note: ‘MR::App::IntSeq’ declared here
>    57 |       IntSeq,
>       |       ^~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:298:26: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                          ^
> ./core/app.h:298:38: error: ‘FloatSeq’ was not declared in this scope; did you mean ‘MR::App::FloatSeq’?
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                      ^~~~~~~~
>       |                                      MR::App::FloatSeq
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:58:7: note: ‘MR::App::FloatSeq’ declared here
>    58 |       FloatSeq,
>       |       ^~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:298:59: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                                           ^
> ./core/app.h:298:71: error: ‘Various’ was not declared in this scope; did you mean ‘MR::App::Various’?
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                                                       ^~~~~~~
>       |                                                                       MR::App::Various
> In file included from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/cmdline_option.h:61:7: note: ‘MR::App::Various’ declared here
>    61 |       Various
>       |       ^~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:301:27: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   301 |                 ((option->size() == 1) ?
>       |                           ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:303:47: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   303 |                  ("one of the " + str(option->size()) + " expected arguments ")) +
>       |                                               ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:303:35: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   303 |                  ("one of the " + str(option->size()) + " expected arguments ")) +
>       |                                   ^~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:304:44: error: request for member ‘id’ in ‘* option’, which is of non-class type ‘const int’
>   304 |                 "for option \"-" + option->id + "\", yet this itself looks like a separate command-line option; " +
>       |                                            ^~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:306:27: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   306 |                 ((option->size() == 1) ? " " : "s ") +
>       |                           ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:307:56: error: request for member ‘id’ in ‘* option’, which is of non-class type ‘const int’
>   307 |                 "to command-line option \"-" + option->id + "\" may have been erroneously omitted, which may cause " +
>       |                                                        ^~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> ./core/app.h:300:13: note: in expansion of macro ‘WARN’
>   300 |             WARN (std::string("Value \"") + arguments[i] + "\" is being used as " +
>       |             ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h: In member function ‘bool MR::App::ParsedOption::operator==(const char*) const’:
> ./core/app.h:324:30: error: ‘lowercase’ was not declared in this scope; did you mean ‘Eigen::lowercase’?
>   324 |           std::string name = lowercase (match);
>       |                              ^~~~~~~~~
>       |                              Eigen::lowercase
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/mrtrix.h:98:22: note: ‘Eigen::lowercase’ declared here
>    98 |   inline std::string lowercase (const std::string& string)
>       |                      ^~~~~~~~~
> In file included from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/app.h:325:26: error: ‘opt’ was not declared in this scope
>   325 |           return name == opt->id;
>       |                          ^~~
> ./core/app.h: At global scope:
> ./core/app.h:332:12: error: ‘vector’ does not name a type
>   332 |     extern vector<ParsedArgument> argument;
>       |            ^~~~~~
> ./core/app.h:334:12: error: ‘vector’ does not name a type
>   334 |     extern vector<ParsedOption> option;
>       |            ^~~~~~
> ./core/app.h:350:12: error: ‘Description’ does not name a type
>   350 |     extern Description DESCRIPTION;
>       |            ^~~~~~~~~~~
> ./core/app.h:369:12: error: ‘ExampleList’ does not name a type
>   369 |     extern ExampleList EXAMPLES;
>       |            ^~~~~~~~~~~
> ./core/app.h:386:12: error: ‘ArgumentList’ does not name a type
>   386 |     extern ArgumentList ARGUMENTS;
>       |            ^~~~~~~~~~~~
> ./core/app.h:405:12: error: ‘OptionList’ does not name a type
>   405 |     extern OptionList OPTIONS;
>       |            ^~~~~~~~~~
> ./core/app.h:425:12: error: ‘Description’ does not name a type
>   425 |     extern Description REFERENCES;
>       |            ^~~~~~~~~~~
> ./core/app.h:429:12: error: ‘OptionGroup’ does not name a type
>   429 |     extern OptionGroup __standard_options;
>       |            ^~~~~~~~~~~
> ./core/app.h:451:11: error: ‘vector’ does not name a type
>   451 |     const vector<ParsedOption> get_options (const std::string& name);
>       |           ^~~~~~
> ./core/app.h: In function ‘T Eigen::get_option_value(const string&, T)’:
> ./core/app.h:467:18: error: there are no arguments to ‘get_options’ that depend on a template parameter, so a declaration of ‘get_options’ must be available [-fpermissive]
>   467 |       auto opt = get_options(name);
>       |                  ^~~~~~~~~~~
> ./core/app.h: At global scope:
> ./core/app.h:474:59: error: ‘App’ does not name a type
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                           ^~~
> ./core/app.h:474:78: error: expected unqualified-id before ‘&’ token
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                                              ^
> ./core/app.h:474:78: error: expected ‘)’ before ‘&’ token
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                  ~                                           ^
>       |                                                                              )
> ./core/app.h:474:80: error: expected initializer before ‘right’
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                                                ^~~~~
> ./core/app.h:482:66: error: ‘App’ does not name a type
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                  ^~~
> ./core/app.h:482:85: error: expected unqualified-id before ‘&’ token
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                                     ^
> ./core/app.h:482:85: error: expected ‘)’ before ‘&’ token
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                     ~                                               ^
>       |                                                                                     )
> ./core/app.h:482:87: error: expected initializer before ‘arg’
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                                       ^~~
> In file included from /usr/include/c++/11/fstream:42,
>                  from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/x86_64-linux-gnu/c++/11/bits/basic_file.h:54:11: error: ‘__basic_file’ is not a class template
>    54 |     class __basic_file<char>
>       |           ^~~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/basic_file.h:54:28: error: template specifiers not specified in declaration of ‘template<class _CharT> class std::__basic_file’
>    54 |     class __basic_file<char>
>       |                            ^
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:85:49: error: expected template-name before ‘<’ token
>    85 |     class basic_filebuf : public basic_streambuf<_CharT, _Traits>
>       |                                                 ^
> /usr/include/c++/11/fstream:85:49: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:497:48: error: expected template-name before ‘<’ token
>   497 |     class basic_ifstream : public basic_istream<_CharT, _Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:497:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:758:48: error: expected template-name before ‘<’ token
>   758 |     class basic_ofstream : public basic_ostream<_CharT,_Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:758:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:1021:48: error: expected template-name before ‘<’ token
>  1021 |     class basic_fstream : public basic_iostream<_CharT, _Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:1021:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:1269:5: error: variable or field ‘swap’ declared void
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1269:10: error: ‘basic_filebuf’ was not declared in this scope; did you mean ‘std::basic_filebuf’?
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~
>       |          std::basic_filebuf
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:113:11: note: ‘std::basic_filebuf’ declared here
>   113 |     class basic_filebuf;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1269:30: error: expected primary-expression before ‘,’ token
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                              ^
> /usr/include/c++/11/fstream:1269:39: error: expected primary-expression before ‘>’ token
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                                       ^
> /usr/include/c++/11/fstream:1269:42: error: ‘__x’ was not declared in this scope
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                                          ^~~
> /usr/include/c++/11/fstream:1270:10: error: ‘basic_filebuf’ was not declared in this scope; did you mean ‘std::basic_filebuf’?
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~
>       |          std::basic_filebuf
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:113:11: note: ‘std::basic_filebuf’ declared here
>   113 |     class basic_filebuf;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1270:30: error: expected primary-expression before ‘,’ token
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                              ^
> /usr/include/c++/11/fstream:1270:39: error: expected primary-expression before ‘>’ token
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                                       ^
> /usr/include/c++/11/fstream:1270:42: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                                          ^~~
>       |                                          __yn
> /usr/include/c++/11/fstream:1276:5: error: variable or field ‘swap’ declared void
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1276:10: error: ‘basic_ifstream’ was not declared in this scope; did you mean ‘std::basic_ifstream’?
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ifstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:116:11: note: ‘std::basic_ifstream’ declared here
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1276:31: error: expected primary-expression before ‘,’ token
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                               ^
> /usr/include/c++/11/fstream:1276:40: error: expected primary-expression before ‘>’ token
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                                        ^
> /usr/include/c++/11/fstream:1276:43: error: ‘__x’ was not declared in this scope
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                                           ^~~
> /usr/include/c++/11/fstream:1277:10: error: ‘basic_ifstream’ was not declared in this scope; did you mean ‘std::basic_ifstream’?
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ifstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:116:11: note: ‘std::basic_ifstream’ declared here
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1277:31: error: expected primary-expression before ‘,’ token
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                               ^
> /usr/include/c++/11/fstream:1277:40: error: expected primary-expression before ‘>’ token
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                                        ^
> /usr/include/c++/11/fstream:1277:43: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                                           ^~~
>       |                                           __yn
> /usr/include/c++/11/fstream:1283:5: error: variable or field ‘swap’ declared void
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1283:10: error: ‘basic_ofstream’ was not declared in this scope; did you mean ‘std::basic_ofstream’?
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ofstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:119:11: note: ‘std::basic_ofstream’ declared here
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1283:31: error: expected primary-expression before ‘,’ token
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                               ^
> /usr/include/c++/11/fstream:1283:40: error: expected primary-expression before ‘>’ token
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                                        ^
> /usr/include/c++/11/fstream:1283:43: error: ‘__x’ was not declared in this scope
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                                           ^~~
> /usr/include/c++/11/fstream:1284:10: error: ‘basic_ofstream’ was not declared in this scope; did you mean ‘std::basic_ofstream’?
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ofstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:119:11: note: ‘std::basic_ofstream’ declared here
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1284:31: error: expected primary-expression before ‘,’ token
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                               ^
> /usr/include/c++/11/fstream:1284:40: error: expected primary-expression before ‘>’ token
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                                        ^
> /usr/include/c++/11/fstream:1284:43: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                                           ^~~
>       |                                           __yn
> /usr/include/c++/11/fstream:1290:5: error: variable or field ‘swap’ declared void
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1290:10: error: ‘basic_fstream’ was not declared in this scope; did you mean ‘std::basic_fstream’?
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~
>       |          std::basic_fstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:122:11: note: ‘std::basic_fstream’ declared here
>   122 |     class basic_fstream;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1290:30: error: expected primary-expression before ‘,’ token
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                              ^
> /usr/include/c++/11/fstream:1290:39: error: expected primary-expression before ‘>’ token
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                                       ^
> /usr/include/c++/11/fstream:1290:42: error: ‘__x’ was not declared in this scope
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                                          ^~~
> /usr/include/c++/11/fstream:1291:10: error: ‘basic_fstream’ was not declared in this scope; did you mean ‘std::basic_fstream’?
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~
>       |          std::basic_fstream
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:122:11: note: ‘std::basic_fstream’ declared here
>   122 |     class basic_fstream;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/fstream:1291:30: error: expected primary-expression before ‘,’ token
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                              ^
> /usr/include/c++/11/fstream:1291:39: error: expected primary-expression before ‘>’ token
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                                       ^
> /usr/include/c++/11/fstream:1291:42: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                                          ^~~
>       |                                          __yn
> In file included from /usr/include/c++/11/fstream:1298,
>                  from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> /usr/include/c++/11/bits/fstream.tcc:49:18: error: expected initializer before ‘<’ token
>    49 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:63:18: error: expected initializer before ‘<’ token
>    63 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:80:5: error: ‘basic_filebuf’ does not name a type
>    80 |     basic_filebuf<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:95:5: error: ‘basic_filebuf’ does not name a type
>    95 |     basic_filebuf<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:123:5: error: ‘basic_filebuf’ does not name a type
>   123 |     basic_filebuf<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:153:18: error: expected initializer before ‘<’ token
>   153 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:178:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   178 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:178:27: error: expected initializer before ‘<’ token
>   178 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:248:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   248 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:248:27: error: expected initializer before ‘<’ token
>   248 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:296:5: error: ‘streamsize’ does not name a type
>   296 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:322:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   322 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:322:27: error: expected initializer before ‘<’ token
>   322 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:481:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   481 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:481:27: error: expected initializer before ‘<’ token
>   481 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:540:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   540 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:540:27: error: expected initializer before ‘<’ token
>   540 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:606:18: error: expected initializer before ‘<’ token
>   606 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:668:5: error: ‘streamsize’ does not name a type
>   668 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:754:5: error: ‘streamsize’ does not name a type
>   754 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:802:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   802 |     typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:802:27: error: expected initializer before ‘<’ token
>   802 |     typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:831:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   831 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:831:27: error: expected initializer before ‘<’ token
>   831 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:891:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   891 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:891:27: error: expected initializer before ‘<’ token
>   891 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:906:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   906 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:906:27: error: expected initializer before ‘<’ token
>   906 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:932:22: error: expected initializer before ‘<’ token
>   932 |     int basic_filebuf<_CharT, _Traits>::
>       |                      ^
> /usr/include/c++/11/bits/fstream.tcc:951:18: error: expected initializer before ‘<’ token
>   951 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1012:18: error: expected initializer before ‘<’ token
>  1012 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1029:18: error: expected initializer before ‘<’ token
>  1029 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1086:25: error: ‘basic_filebuf’ is not a class template
>  1086 |   extern template class basic_filebuf<char>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1086:25: error: template argument required for ‘class basic_filebuf’
> /usr/include/c++/11/bits/fstream.tcc:1087:25: error: ‘basic_ifstream’ is not a class template
>  1087 |   extern template class basic_ifstream<char>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1087:25: error: template argument required for ‘class basic_ifstream’
> /usr/include/c++/11/bits/fstream.tcc:1088:25: error: ‘basic_ofstream’ is not a class template
>  1088 |   extern template class basic_ofstream<char>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1088:25: error: template argument required for ‘class basic_ofstream’
> /usr/include/c++/11/bits/fstream.tcc:1089:25: error: ‘basic_fstream’ is not a class template
>  1089 |   extern template class basic_fstream<char>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1089:25: error: template argument required for ‘class basic_fstream’
> /usr/include/c++/11/bits/fstream.tcc:1092:25: error: ‘basic_filebuf’ is not a class template
>  1092 |   extern template class basic_filebuf<wchar_t>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1092:25: error: template argument required for ‘class basic_filebuf’
> /usr/include/c++/11/bits/fstream.tcc:1093:25: error: ‘basic_ifstream’ is not a class template
>  1093 |   extern template class basic_ifstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1093:25: error: template argument required for ‘class basic_ifstream’
> /usr/include/c++/11/bits/fstream.tcc:1094:25: error: ‘basic_ofstream’ is not a class template
>  1094 |   extern template class basic_ofstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1094:25: error: template argument required for ‘class basic_ofstream’
> /usr/include/c++/11/bits/fstream.tcc:1095:25: error: ‘basic_fstream’ is not a class template
>  1095 |   extern template class basic_fstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1095:25: error: template argument required for ‘class basic_fstream’
> In file included from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/key_value.h:61:25: error: field ‘in’ has incomplete type ‘std::ifstream’ {aka ‘std::basic_ifstream<char>’}
>    61 |           std::ifstream in;
>       |                         ^~
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:116:11: note: declaration of ‘std::ifstream’ {aka ‘class std::basic_ifstream<char>’}
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/math/math.h:27,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/key_value.h:67:12: error: variable or field ‘write’ declared void
>    67 |       void write (File::OFStream& out,
>       |            ^~~~~
> ./core/file/key_value.h:67:19: error: ‘File’ has not been declared
>    67 |       void write (File::OFStream& out,
>       |                   ^~~~
> ./core/file/key_value.h:67:35: error: ‘out’ was not declared in this scope
>    67 |       void write (File::OFStream& out,
>       |                                   ^~~
> ./core/file/key_value.h:68:19: error: expected primary-expression before ‘const’
>    68 |                   const KeyValues& keyvals,
>       |                   ^~~~~
> ./core/file/key_value.h:69:19: error: expected primary-expression before ‘const’
>    69 |                   const std::string& prefix,
>       |                   ^~~~~
> ./core/file/key_value.h:70:19: error: expected primary-expression before ‘const’
>    70 |                   const bool add_to_command_history = true);
>       |                   ^~~~~
> In file included from ./core/math/math.h:28,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/ofstream.h:39:34: error: invalid use of incomplete type ‘std::ofstream’ {aka ‘class std::basic_ofstream<char>’}
>    39 |     class OFStream : public std::ofstream { NOMEMALIGN
>       |                                  ^~~~~~~~
> In file included from /usr/include/c++/11/system_error:40,
>                  from /usr/include/c++/11/mutex:42,
>                  from ./core/math/zstatistic.h:22,
>                  from core/math/zstatistic.cpp:18:
> /usr/include/c++/11/iosfwd:119:11: note: declaration of ‘std::ofstream’ {aka ‘class std::basic_ofstream<char>’}
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h:128:9: error: ‘container_value_type’ is not a class template
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |         ^~~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:128:61: error: ‘is_eigen_type’ was not declared in this scope; did you mean ‘MR::is_eigen_type’?
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                             ^~~~~~~~~~~~~
>       |                                                             MR::is_eigen_type
> ./core/math/math.h:113:9: note: ‘MR::is_eigen_type’ declared here
>   113 |   class is_eigen_type { NOMEMALIGN
>       |         ^~~~~~~~~~~~~
> ./core/math/math.h:128:79: error: template argument 1 is invalid
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                               ^
> ./core/math/math.h:128:87: error: expected ‘(’ before ‘,’ token
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                                       ^
>       |                                                                                       (
> ./core/math/math.h:128:93: error: expected ‘{’ or ‘:’ before ‘::’ token
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                                             ^~
> ./core/math/math.h:128:93: error: expected ‘{’ before ‘::’ token
> ./core/math/math.h:136:79: error: ‘KeyValues’ does not name a type
>   136 |     void save_matrix (const MatrixType& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                               ^~~~~~~~~
> ./core/math/math.h:136:100: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   136 |     void save_matrix (const MatrixType& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                    ^~~~~~~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h: In function ‘void Eigen::save_matrix(const MatrixType&, const string&, const int&, bool)’:
> ./core/math/math.h:139:7: error: ‘File’ has not been declared
>   139 |       File::OFStream out (filename);
>       |       ^~~~
> ./core/math/math.h:140:7: error: ‘File’ has not been declared
>   140 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |       ^~~~
> ./core/math/math.h:140:30: error: ‘out’ was not declared in this scope
>   140 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                              ^~~
> ./core/math/math.h:141:88: error: ‘Path’ was not declared in this scope; did you mean ‘MR::Path’?
>   141 |       Eigen::IOFormat fmt (Eigen::FullPrecision, Eigen::DontAlignCols, std::string (1, Path::delimiter (filename)), "\n", "", "", "", "");
>       |                                                                                        ^~~~
>       |                                                                                        MR::Path
> In file included from ./core/app.h:31,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/file/path.h:57:13: note: ‘MR::Path’ declared here
>    57 |   namespace Path
>       |             ^~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h: At global scope:
> ./core/math/math.h:147:31: error: ‘default_type’ does not name a type
>   147 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h:148:5: error: ‘vector’ does not name a type
>   148 |     vector<vector<ValueType>> load_matrix_2D_vector (const std::string& filename, vector<std::string>* comments = nullptr)
>       |     ^~~~~~
> ./core/math/math.h:195:31: error: ‘default_type’ does not name a type
>   195 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, -1> Eigen::load_matrix(const string&)’:
> ./core/exception.h:75:49: error: there are no arguments to ‘report_to_user_func’ that depend on a template parameter, so a declaration of ‘report_to_user_func’ must be available [-fpermissive]
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:198:7: note: in expansion of macro ‘DEBUG’
>   198 |       DEBUG ("loading matrix file \"" + filename + "\"...");
>       |       ^~~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h:199:13: error: ‘vector’ does not name a type
>   199 |       const vector<vector<ValueType>> V = load_matrix_2D_vector<ValueType> (filename);
>       |             ^~~~~~
> ./core/math/math.h:201:67: error: ‘V’ was not declared in this scope
>   201 |       Eigen::Matrix<ValueType, Eigen::Dynamic, Eigen::Dynamic> M (V.size(), V[0].size());
>       |                                                                   ^
> ./core/math/math.h: At global scope:
> ./core/math/math.h:211:31: error: ‘default_type’ does not name a type
>   211 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, -1> Eigen::parse_matrix(const string&)’:
> ./core/math/math.h:215:26: error: there are no arguments to ‘split_lines’ that depend on a template parameter, so a declaration of ‘split_lines’ must be available [-fpermissive]
>   215 |       const auto lines = split_lines (spec);
>       |                          ^~~~~~~~~~~
> ./core/math/math.h:221:17: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   221 |           throw Exception ("error converting string to matrix - uneven number of entries per row");
>       |                 ^~~~~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:230:10: error: ‘transform_type’ does not name a type
>   230 |   inline transform_type load_transform (const std::string& filename, VectorType& centre)
>       |          ^~~~~~~~~~~~~~
> ./core/math/math.h:281:10: error: ‘transform_type’ does not name a type
>   281 |   inline transform_type load_transform (const std::string& filename)
>       |          ^~~~~~~~~~~~~~
> ./core/math/math.h:288:37: error: ‘transform_type’ does not name a type
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                     ^~~~~~~~~~~~~~
> ./core/math/math.h:288:91: error: ‘KeyValues’ does not name a type
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                           ^~~~~~~~~
> ./core/math/math.h:288:112: error: ‘KeyValues’ was not declared in this scope; did you mean ‘MR::KeyValues’?
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                ^~~~~~~~~
>       |                                                                                                                MR::KeyValues
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:238:9: note: ‘MR::KeyValues’ declared here
>   238 |   using KeyValues = std::map<std::string, std::string>;
>       |         ^~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from ./core/math/math.h:23,
>                  from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h: In function ‘void Eigen::save_transform(const int&, const string&, const int&, bool)’:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:290:5: note: in expansion of macro ‘DEBUG’
>   290 |     DEBUG ("saving transform to file \"" + filename + "\"...");
>       |     ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h:291:5: error: ‘File’ has not been declared
>   291 |     File::OFStream out (filename);
>       |     ^~~~
> ./core/math/math.h:292:5: error: ‘File’ has not been declared
>   292 |     File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |     ^~~~
> ./core/math/math.h:292:28: error: ‘out’ was not declared in this scope
>   292 |     File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                            ^~~
> ./core/math/math.h:293:19: error: ‘Path’ has not been declared
>   293 |     const char d (Path::delimiter (filename));
>       |                   ^~~~
> ./core/math/math.h:295:14: error: request for member ‘matrix’ in ‘M’, which is of non-class type ‘const int’
>   295 |     out << M.matrix().format (fmt);
>       |              ^~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:300:37: error: ‘transform_type’ does not name a type
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                     ^~~~~~~~~~~~~~
> ./core/math/math.h:300:133: error: ‘KeyValues’ does not name a type
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                                     ^~~~~~~~~
> ./core/math/math.h:300:154: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                                                          ^~~~~~~~~
> ./core/math/math.h: In function ‘void Eigen::save_transform(const int&, const Eigen::MatrixBase<Derived>&, const string&, const int&, bool)’:
> ./core/math/math.h:303:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   303 |       throw Exception ("save_transform() requires 3x1 vector as centre");
>       |             ^~~~~~~~~
> ./core/math/math.h:304:5: error: ‘KeyValues’ was not declared in this scope; did you mean ‘MR::KeyValues’?
>   304 |     KeyValues local_keyvals = keyvals;
>       |     ^~~~~~~~~
>       |     MR::KeyValues
> In file included from ./core/math/stats/typedefs.h:20,
>                  from ./core/math/zstatistic.h:24,
>                  from core/math/zstatistic.cpp:18:
> ./core/types.h:238:9: note: ‘MR::KeyValues’ declared here
>   238 |   using KeyValues = std::map<std::string, std::string>;
>       |         ^~~~~~~~~
> In file included from ./core/math/erfinv.h:18,
>                  from core/math/zstatistic.cpp:21:
> ./core/math/math.h:308:5: error: ‘local_keyvals’ was not declared in this scope
>   308 |     local_keyvals.insert(std::pair<std::string, std::string>("centre",  os.str()));
>       |     ^~~~~~~~~~~~~
> ./core/math/math.h:309:5: error: there are no arguments to ‘save_transform’ that depend on a template parameter, so a declaration of ‘save_transform’ must be available [-fpermissive]
>   309 |     save_transform(M, filename, local_keyvals, add_to_command_history);
>       |     ^~~~~~~~~~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:314:79: error: ‘KeyValues’ does not name a type
>   314 |     void save_vector (const VectorType& V, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                               ^~~~~~~~~
> ./core/math/math.h:314:100: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   314 |     void save_vector (const VectorType& V, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                    ^~~~~~~~~
> ./core/math/math.h: In function ‘void Eigen::save_vector(const VectorType&, const string&, const int&, bool)’:
> ./core/math/math.h:317:7: error: ‘File’ has not been declared
>   317 |       File::OFStream out (filename);
>       |       ^~~~
> ./core/math/math.h:318:7: error: ‘File’ has not been declared
>   318 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |       ^~~~
> ./core/math/math.h:318:30: error: ‘out’ was not declared in this scope
>   318 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                              ^~~
> ./core/math/math.h:319:21: error: ‘Path’ has not been declared
>   319 |       const char d (Path::delimiter (filename));
>       |                     ^~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:326:31: error: ‘default_type’ does not name a type
>   326 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, 1> Eigen::load_vector(const string&)’:
> ./core/math/math.h:329:18: error: ‘load_matrix’ was not declared in this scope; did you mean ‘Eigen::load_matrix’?
>   329 |       auto vec = load_matrix<ValueType> (filename);
>       |                  ^~~~~~~~~~~
>       |                  Eigen::load_matrix
> ./core/math/math.h:196:62: note: ‘Eigen::load_matrix’ declared here
>   196 |     Eigen::Matrix<ValueType, Eigen::Dynamic, Eigen::Dynamic> load_matrix (const std::string& filename)
>       |                                                              ^~~~~~~~~~~
> ./core/math/math.h:329:39: error: expected primary-expression before ‘>’ token
>   329 |       auto vec = load_matrix<ValueType> (filename);
>       |                                       ^
> ./core/math/math.h:333:15: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   333 |         throw Exception ("file \"" + filename + "\" contains matrix, not vector");
>       |               ^~~~~~~~~
> In file included from core/math/zstatistic.cpp:21:
> ./core/math/erfinv.h: At global scope:
> ./core/math/erfinv.h:41:5: error: ‘default_type’ does not name a type
>    41 |     default_type erfinv  (const default_type);
>       |     ^~~~~~~~~~~~
> ./core/math/erfinv.h:46:5: error: ‘default_type’ does not name a type
>    46 |     default_type erfcinv (const default_type);
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:41:7: error: ‘default_type’ does not name a type
>    41 |       default_type F2z_upper (const default_type F, const size_t rank, const default_type dof)
>       |       ^~~~~~~~~~~~
> core/math/zstatistic.cpp:56:7: error: ‘default_type’ does not name a type
>    56 |       default_type F2z_lower (const default_type oneoverF, const size_t rank, const default_type dof)
>       |       ^~~~~~~~~~~~
> core/math/zstatistic.cpp:77:5: error: ‘default_type’ does not name a type
>    77 |     default_type t2z (const default_type stat, const default_type dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:93:5: error: ‘default_type’ does not name a type
>    93 |     default_type F2z (const default_type F, const size_t rank, const default_type dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:112:5: error: ‘default_type’ does not name a type
>   112 |     default_type Zstatistic::t2z (const default_type t, const size_t dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:128:5: error: ‘default_type’ does not name a type
>   128 |     default_type Zstatistic::F2z (const default_type F, const size_t rank, const size_t dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:145:5: error: ‘default_type’ does not name a type
>   145 |     default_type Zstatistic::v2z (const default_type v, const default_type dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:152:5: error: ‘default_type’ does not name a type
>   152 |     default_type Zstatistic::G2z (const default_type G, const size_t rank, const default_type dof)
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:172:5: error: ‘default_type’ does not name a type
>   172 |     default_type Zstatistic::LookupBase::interp (const default_type stat,
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:207:15: error: ‘default_type’ does not name a type
>   207 |     constexpr default_type t2z_max = 10.0;
>       |               ^~~~~~~~~~~~
> core/math/zstatistic.cpp:208:15: error: ‘default_type’ does not name a type
>   208 |     constexpr default_type t2z_step = 0.001;
>       |               ^~~~~~~~~~~~
> core/math/zstatistic.cpp:210:48: error: ‘t2z_max’ was not declared in this scope
>   210 |     constexpr ssize_t t2z_halfdomain = ssize_t(t2z_max / t2z_step);
>       |                                                ^~~~~~~
> core/math/zstatistic.cpp:210:58: error: ‘t2z_step’ was not declared in this scope
>   210 |     constexpr ssize_t t2z_halfdomain = ssize_t(t2z_max / t2z_step);
>       |                                                          ^~~~~~~~
> core/math/zstatistic.cpp:212:5: error: ‘Zstatistic’ does not name a type
>   212 |     Zstatistic::Lookup_t2z::Lookup_t2z (const size_t dof) :
>       |     ^~~~~~~~~~
> core/math/zstatistic.cpp:249:5: error: ‘default_type’ does not name a type
>   249 |     default_type Zstatistic::Lookup_t2z::operator() (const default_type t) const
>       |     ^~~~~~~~~~~~
> core/math/zstatistic.cpp:284:15: error: ‘default_type’ does not name a type
>   284 |     constexpr default_type F2z_max = 100.0;
>       |               ^~~~~~~~~~~~
> core/math/zstatistic.cpp:285:15: error: ‘default_type’ does not name a type
>   285 |     constexpr default_type F2z_step = 0.01;
>       |               ^~~~~~~~~~~~
> core/math/zstatistic.cpp:287:48: error: ‘F2z_max’ was not declared in this scope
>   287 |     constexpr ssize_t F2z_halfdomain = size_t((F2z_max - 1.0) / F2z_step);
>       |                                                ^~~~~~~
> core/math/zstatistic.cpp:287:65: error: ‘F2z_step’ was not declared in this scope
>   287 |     constexpr ssize_t F2z_halfdomain = size_t((F2z_max - 1.0) / F2z_step);
>       |                                                                 ^~~~~~~~
> core/math/zstatistic.cpp:289:5: error: ‘Zstatistic’ does not name a type
>   289 |     Zstatistic::Lookup_F2z::Lookup_F2z (const size_t rank, const size_t dof) :
>       |     ^~~~~~~~~~
> core/math/zstatistic.cpp:352:5: error: ‘default_type’ does not name a type
>   352 |     default_type Zstatistic::Lookup_F2z::operator() (const default_type F) const
>       |     ^~~~~~~~~~~~
> 
> ERROR: (  1/546) [CC] tmp/core/file/config.o
> 
> g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version with openmp" -pthread -fPIC -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -mmmx -msse -msse2 -mfpmath=sse -DMRTRIX_WORD64 -DMRTRIX_HAVE_EIGEN_UNSUPPORTED_SPECIAL_FUNCTIONS -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DMRTRIX_PNG_SUPPORT -idirafter /usr/include/libpng16 -DEIGEN_FFTW_DEFAULT -fopenmp -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -idirafter /usr/include/eigen3 core/file/config.cpp -o tmp/core/file/config.o
> 
> failed with output
> 
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:326:49: error: ‘using Vector3 = class Eigen::Matrix<double, 3, 1>’ redeclared as different kind of entity
>   326 |   using Vector3 = Matrix<MR::default_type, 3, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: previous declaration ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:327:49: error: ‘using Vector4 = class Eigen::Matrix<double, 4, 1>’ redeclared as different kind of entity
>   327 |   using Vector4 = Matrix<MR::default_type, 4, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:542:1: note: previous declaration ‘template<class Type> using Vector4 = Eigen::Matrix<Type, 4, 1>’
>   542 | EIGEN_MAKE_TYPEDEFS(4, 4)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:112:7: error: ‘vector’ does not name a type
>   112 |       vector<std::string> description;
>       |       ^~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const string&)’:
> ./core/exception.h:85:9: error: ‘description’ was not declared in this scope
>    85 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const MR::Exception&, const string&)’:
> ./core/exception.h:88:9: error: class ‘MR::Exception’ does not have any field named ‘description’
>    88 |         description (previous_exception.description) {
>       |         ^~~~~~~~~~~
> ./core/exception.h:88:41: error: ‘const class MR::Exception’ has no member named ‘description’
>    88 |         description (previous_exception.description) {
>       |                                         ^~~~~~~~~~~
> ./core/exception.h:89:9: error: ‘description’ was not declared in this scope
>    89 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘std::size_t MR::Exception::num() const’:
> ./core/exception.h:97:16: error: ‘description’ was not declared in this scope
>    97 |         return description.size();
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘const string& MR::Exception::operator[](std::size_t) const’:
> ./core/exception.h:100:16: error: ‘description’ was not declared in this scope
>   100 |         return description[n];
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const string&)’:
> ./core/exception.h:103:9: error: ‘description’ was not declared in this scope
>   103 |         description.push_back (s);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const MR::Exception&)’:
> ./core/exception.h:106:25: error: ‘const class MR::Exception’ has no member named ‘description’
>   106 |         for (auto s : e.description)
>       |                         ^~~~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:115:50: error: expected class-name before ‘{’ token
>   115 |   class InvalidImageException : public Exception { NOMEMALIGN
>       |                                                  ^
> ./core/exception.h:118:36: error: ‘Exception’ does not name a type
>   118 |       InvalidImageException (const Exception& previous_exception, const std::string& msg)
>       |                                    ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const string&)’:
> ./core/exception.h:117:56: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   117 |       InvalidImageException (const std::string& msg) : Exception(msg) {}
>       |                                                        ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const int&, const string&)’:
> ./core/exception.h:119:11: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   119 |         : Exception(previous_exception, msg) {}
>       |           ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:123:44: error: expected class-name before ‘{’ token
>   123 |   class CancelException : public Exception { NOMEMALIGN
>       |                                            ^
> ./core/exception.h: In constructor ‘MR::CancelException::CancelException()’:
> ./core/exception.h:125:28: error: class ‘MR::CancelException’ does not have any field named ‘Exception’
>   125 |       CancelException () : Exception ("operation cancelled by user") { }
>       |                            ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:128:41: error: ‘Exception’ does not name a type
>   128 |   void display_exception_cmdline (const Exception& E, int log_level);
>       |                                         ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::LogLevelLatch::LogLevelLatch(int)’:
> ./core/exception.h:137:23: error: ‘App’ has not been declared
>   137 |           prev_level (App::log_level)
>       |                       ^~~
> ./core/exception.h:139:9: error: ‘App’ has not been declared
>   139 |         App::log_level = new_level;
>       |         ^~~
> ./core/exception.h: In destructor ‘MR::LogLevelLatch::~LogLevelLatch()’:
> ./core/exception.h:142:9: error: ‘App’ has not been declared
>   142 |         App::log_level = prev_level;
>       |         ^~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:64:12: error: ‘max_digits’ is not a class template
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:64:91: error: redeclared with 1 template parameter
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |                                                                                           ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:12: error: ‘max_digits’ is not a class template
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:108: error: redeclared with 1 template parameter
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                            ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:74:12: error: ‘max_digits’ is not a class template
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:74:163: error: redeclared with 1 template parameter
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                                                                                   ^
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h: In function ‘std::string Eigen::unquote(const string&)’:
> ./core/mrtrix.h:149:76: error: definition of ‘auto Eigen::unquote(const string&)::<lambda>::operator()(const char&) const’ is not in namespace enclosing ‘Eigen::unquote(const string&)::<lambda>’ [-fpermissive]
>   149 |     if (std::none_of (substring.begin(), substring.end(), [] (const char& c) { return c == '\"'; }))
>       |                                                                            ^
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:173:3: error: ‘vector’ does not name a type
>   173 |   vector<std::string> split (
>       |   ^~~~~~
> ./core/mrtrix.h:179:10: error: ‘vector’ does not name a type
>   179 |   inline vector<std::string> split_lines (
>       |          ^~~~~~
> ./core/mrtrix.h: In function ‘std::size_t Eigen::is_dash(const string&)’:
> ./core/mrtrix.h:227:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   227 |     size_t nbytes = char_is_dash (arg.c_str());
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘bool Eigen::consume_dash(const char*&)’:
> ./core/mrtrix.h:238:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   238 |     size_t nbytes = char_is_dash (arg);
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘std::string Eigen::str(const T&, int)’:
> ./core/mrtrix.h:252:14: error: ‘max_digits’ was not declared in this scope; did you mean ‘MR::max_digits’?
>   252 |     else if (max_digits<T>::value())
>       |              ^~~~~~~~~~
>       |              MR::max_digits
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:59:12: note: ‘MR::max_digits’ declared here
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:252:26: error: expected primary-expression before ‘>’ token
>   252 |     else if (max_digits<T>::value())
>       |                          ^
> ./core/mrtrix.h:252:29: error: ‘::value’ has not been declared
>   252 |     else if (max_digits<T>::value())
>       |                             ^~~~~
> ./core/mrtrix.h:253:37: error: expected primary-expression before ‘>’ token
>   253 |       stream.precision (max_digits<T>::value());
>       |                                     ^
> ./core/mrtrix.h:253:40: error: ‘::value’ has not been declared
>   253 |       stream.precision (max_digits<T>::value());
>       |                                        ^~~~~
> ./core/mrtrix.h:256:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   256 |       throw Exception (std::string("error converting type \"") + typeid(T).name() + "\" value to string");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:256:13: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
> ./core/mrtrix.h: In function ‘T Eigen::to(const string&)’:
> ./core/mrtrix.h:262:33: error: there are no arguments to ‘strip’ that depend on a template parameter, so a declaration of ‘strip’ must be available [-fpermissive]
>   262 |     const std::string stripped (strip (string));
>       |                                 ^~~~~
> ./core/mrtrix.h:268:37: error: there are no arguments to ‘lowercase’ that depend on a template parameter, so a declaration of ‘lowercase’ must be available [-fpermissive]
>   268 |         const std::string lstring = lowercase (stripped);
>       |                                     ^~~~~~~~~
> ./core/mrtrix.h:278:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   278 |       throw Exception ("error converting string \"" + string + "\" to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:280:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   280 |       throw Exception ("incomplete use of string \"" + string + "\" in conversion to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:285:29: error: expected initializer before ‘<’ token
>   285 |   template <> inline bool to<bool> (const std::string& string)
>       |                             ^
> ./core/mrtrix.h:295:37: error: expected initializer before ‘<’ token
>   295 |   template <> inline std::string str<cfloat> (const cfloat& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:308:22: error: ‘cfloat’ does not name a type
>   308 |   template <> inline cfloat to<cfloat> (const std::string& string)
>       |                      ^~~~~~
> ./core/mrtrix.h:353:37: error: expected initializer before ‘<’ token
>   353 |   template <> inline std::string str<cdouble> (const cdouble& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:366:22: error: ‘cdouble’ does not name a type
>   366 |   template <> inline cdouble to<cdouble> (const std::string& string)
>       |                      ^~~~~~~
> ./core/mrtrix.h:417:3: error: ‘vector’ does not name a type
>   417 |   vector<default_type> parse_floats (const std::string& spec);
>       |   ^~~~~~
> ./core/mrtrix.h:422:3: error: ‘vector’ does not name a type
>   422 |   vector<IntType> parse_ints (const std::string& spec, const IntType last = std::numeric_limits<IntType>::max())
>       |   ^~~~~~
> ./core/mrtrix.h:498:34: error: ‘vector’ does not name a type
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:498:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:501:9: error: ‘V’ was not declared in this scope
>   501 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:503:11: error: ‘V’ was not declared in this scope
>   503 |     ret = V[0];
>       |           ^
> ./core/mrtrix.h:504:10: error: ‘vector’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |          ^~~~~~
> ./core/mrtrix.h:504:10: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:504:28: error: expected primary-expression before ‘>’ token
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                            ^
> ./core/mrtrix.h:504:31: error: ‘::const_iterator’ has not been declared
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                               ^~~~~~~~~~~~~~
> ./core/mrtrix.h:504:64: error: ‘i’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                                ^
> ./core/mrtrix.h:505:14: error: ‘delimiter’ was not declared in this scope
>   505 |       ret += delimiter + *i;
>       |              ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:510:34: error: ‘vector’ does not name a type
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:510:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:513:9: error: ‘V’ was not declared in this scope
>   513 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:515:15: error: ‘V’ was not declared in this scope
>   515 |     ret = str(V[0]);
>       |               ^
> ./core/mrtrix.h:515:11: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   515 |     ret = str(V[0]);
>       |           ^~~
> ./core/mrtrix.h:516:25: error: expected ‘;’ before ‘<’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                         ^
>       |                         ;
> ./core/mrtrix.h:516:25: error: expected primary-expression before ‘<’ token
> ./core/mrtrix.h:516:27: error: expected primary-expression before ‘>’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                           ^
> ./core/mrtrix.h:516:30: error: ‘::const_iterator’ has not been declared
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                              ^~~~~~~~~~~~~~
> ./core/mrtrix.h:516:44: error: expected ‘;’ before ‘i’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                            ^~
>       |                                            ;
> ./core/mrtrix.h:516:45: error: ‘i’ was not declared in this scope
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                             ^
> ./core/mrtrix.h:516:61: error: expected ‘)’ before ‘;’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |         ~                                                   ^
>       |                                                             )
> ./core/mrtrix.h:516:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |     ^~~
> ./core/mrtrix.h:516:63: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                               ^
> ./core/mrtrix.h:516:63: error: ‘i’ was not declared in this scope
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: At global scope:
> ./core/cmdline_option.h:65:15: error: ‘ArgFlags’ does not name a type
>    65 |     constexpr ArgFlags None = 0;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:66:15: error: ‘ArgFlags’ does not name a type
>    66 |     constexpr ArgFlags Optional = 0x1;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:67:15: error: ‘ArgFlags’ does not name a type
>    67 |     constexpr ArgFlags AllowMultiple = 0x2;
>       |               ^~~~~~~~
> ./core/cmdline_option.h:122:9: error: ‘ArgType’ does not name a type
>   122 |         ArgType  type;
>       |         ^~~~~~~
> ./core/cmdline_option.h:124:9: error: ‘ArgFlags’ does not name a type
>   124 |         ArgFlags flags;
>       |         ^~~~~~~~
> ./core/cmdline_option.h:133:13: error: ‘default_type’ does not name a type
>   133 |             default_type min, max;
>       |             ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:206:37: error: ‘default_type’ does not name a type
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:207:37: error: ‘default_type’ does not name a type
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                     ^~~~~~~~~~~~
> ./core/cmdline_option.h:206:77: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                             ^~~~~~~~~~~~
>       |                                                                             MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:206:89: error: template argument 1 is invalid
>   206 |         Argument& type_float (const default_type min = -std::numeric_limits<default_type>::infinity(),
>       |                                                                                         ^
> ./core/cmdline_option.h:207:76: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                            ^~~~~~~~~~~~
>       |                                                                            MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:207:88: error: template argument 1 is invalid
>   207 |                               const default_type max = std::numeric_limits<default_type>::infinity()) {
>       |                                                                                        ^
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In constructor ‘MR::App::Argument::Argument(const char*, std::string)’:
> ./core/cmdline_option.h:112:42: error: class ‘MR::App::Argument’ does not have any field named ‘type’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                          ^~~~
> ./core/cmdline_option.h:112:48: error: ‘Undefined’ was not declared in this scope; did you mean ‘MR::App::Undefined’?
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                ^~~~~~~~~
>       |                                                MR::App::Undefined
> ./core/cmdline_option.h:45:7: note: ‘MR::App::Undefined’ declared here
>    45 |       Undefined,
>       |       ^~~~~~~~~
> ./core/cmdline_option.h:112:60: error: class ‘MR::App::Argument’ does not have any field named ‘flags’
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                            ^~~~~
> ./core/cmdline_option.h:112:67: error: ‘None’ was not declared in this scope
>   112 |           id (name), desc (description), type (Undefined), flags (None)
>       |                                                                   ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::optional()’:
> ./core/cmdline_option.h:154:11: error: ‘flags’ was not declared in this scope
>   154 |           flags |= Optional;
>       |           ^~~~~
> ./core/cmdline_option.h:154:20: error: ‘Optional’ was not declared in this scope; did you mean ‘optional’?
>   154 |           flags |= Optional;
>       |                    ^~~~~~~~
>       |                    optional
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::allow_multiple()’:
> ./core/cmdline_option.h:161:11: error: ‘flags’ was not declared in this scope
>   161 |           flags |= AllowMultiple;
>       |           ^~~~~
> ./core/cmdline_option.h:161:20: error: ‘AllowMultiple’ was not declared in this scope; did you mean ‘allow_multiple’?
>   161 |           flags |= AllowMultiple;
>       |                    ^~~~~~~~~~~~~
>       |                    allow_multiple
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_text()’:
> ./core/cmdline_option.h:168:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   168 |           type = Text;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:168:18: error: ‘Text’ was not declared in this scope; did you mean ‘MR::App::Text’?
>   168 |           type = Text;
>       |                  ^~~~
>       |                  MR::App::Text
> ./core/cmdline_option.h:46:7: note: ‘MR::App::Text’ declared here
>    46 |       Text,
>       |       ^~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_in()’:
> ./core/cmdline_option.h:175:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   175 |           type = ImageIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:175:18: error: ‘ImageIn’ was not declared in this scope; did you mean ‘MR::App::ImageIn’?
>   175 |           type = ImageIn;
>       |                  ^~~~~~~
>       |                  MR::App::ImageIn
> ./core/cmdline_option.h:55:7: note: ‘MR::App::ImageIn’ declared here
>    55 |       ImageIn,
>       |       ^~~~~~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_image_out()’:
> ./core/cmdline_option.h:182:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   182 |           type = ImageOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:182:18: error: ‘ImageOut’ was not declared in this scope; did you mean ‘MR::App::ImageOut’?
>   182 |           type = ImageOut;
>       |                  ^~~~~~~~
>       |                  MR::App::ImageOut
> ./core/cmdline_option.h:56:7: note: ‘MR::App::ImageOut’ declared here
>    56 |       ImageOut,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_integer(int64_t, int64_t)’:
> ./core/cmdline_option.h:190:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   190 |           type = Integer;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:190:18: error: ‘Integer’ was not declared in this scope; did you mean ‘MR::App::Integer’?
>   190 |           type = Integer;
>       |                  ^~~~~~~
>       |                  MR::App::Integer
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:48:7: note: ‘MR::App::Integer’ declared here
>    48 |       Integer,
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_bool()’:
> ./core/cmdline_option.h:200:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   200 |           type = Boolean;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:200:18: error: ‘Boolean’ was not declared in this scope; did you mean ‘MR::App::Boolean’?
>   200 |           type = Boolean;
>       |                  ^~~~~~~
>       |                  MR::App::Boolean
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:47:7: note: ‘MR::App::Boolean’ declared here
>    47 |       Boolean,
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_float(int, int)’:
> ./core/cmdline_option.h:209:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   209 |           type = Float;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:209:18: error: ‘Float’ was not declared in this scope; did you mean ‘MR::App::Float’?
>   209 |           type = Float;
>       |                  ^~~~~
>       |                  MR::App::Float
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:49:7: note: ‘MR::App::Float’ declared here
>    49 |       Float,
>       |       ^~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:210:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘min’
>   210 |           limits.f.min = min;
>       |                    ^~~
> ./core/cmdline_option.h:211:20: error: ‘struct MR::App::Argument::<unnamed union>::<unnamed>’ has no member named ‘max’
>   211 |           limits.f.max = max;
>       |                    ^~~
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_choice(const char* const*)’:
> ./core/cmdline_option.h:228:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   228 |           type = Choice;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:228:18: error: ‘Choice’ was not declared in this scope; did you mean ‘MR::App::Choice’?
>   228 |           type = Choice;
>       |                  ^~~~~~
>       |                  MR::App::Choice
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:54:7: note: ‘MR::App::Choice’ declared here
>    54 |       Choice,
>       |       ^~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_in()’:
> ./core/cmdline_option.h:236:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   236 |           type = ArgFileIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:236:18: error: ‘ArgFileIn’ was not declared in this scope; did you mean ‘MR::App::ArgFileIn’?
>   236 |           type = ArgFileIn;
>       |                  ^~~~~~~~~
>       |                  MR::App::ArgFileIn
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:50:7: note: ‘MR::App::ArgFileIn’ declared here
>    50 |       ArgFileIn,
>       |       ^~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_file_out()’:
> ./core/cmdline_option.h:243:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   243 |           type = ArgFileOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:243:18: error: ‘ArgFileOut’ was not declared in this scope; did you mean ‘MR::App::ArgFileOut’?
>   243 |           type = ArgFileOut;
>       |                  ^~~~~~~~~~
>       |                  MR::App::ArgFileOut
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:51:7: note: ‘MR::App::ArgFileOut’ declared here
>    51 |       ArgFileOut,
>       |       ^~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_in()’:
> ./core/cmdline_option.h:250:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   250 |           type = ArgDirectoryIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:250:18: error: ‘ArgDirectoryIn’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryIn’?
>   250 |           type = ArgDirectoryIn;
>       |                  ^~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryIn
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:52:7: note: ‘MR::App::ArgDirectoryIn’ declared here
>    52 |       ArgDirectoryIn,
>       |       ^~~~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_directory_out()’:
> ./core/cmdline_option.h:257:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   257 |           type = ArgDirectoryOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:257:18: error: ‘ArgDirectoryOut’ was not declared in this scope; did you mean ‘MR::App::ArgDirectoryOut’?
>   257 |           type = ArgDirectoryOut;
>       |                  ^~~~~~~~~~~~~~~
>       |                  MR::App::ArgDirectoryOut
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:53:7: note: ‘MR::App::ArgDirectoryOut’ declared here
>    53 |       ArgDirectoryOut,
>       |       ^~~~~~~~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_int()’:
> ./core/cmdline_option.h:264:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   264 |           type = IntSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:264:18: error: ‘IntSeq’ was not declared in this scope; did you mean ‘MR::App::IntSeq’?
>   264 |           type = IntSeq;
>       |                  ^~~~~~
>       |                  MR::App::IntSeq
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:57:7: note: ‘MR::App::IntSeq’ declared here
>    57 |       IntSeq,
>       |       ^~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_sequence_float()’:
> ./core/cmdline_option.h:271:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   271 |           type = FloatSeq;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:271:18: error: ‘FloatSeq’ was not declared in this scope; did you mean ‘MR::App::FloatSeq’?
>   271 |           type = FloatSeq;
>       |                  ^~~~~~~~
>       |                  MR::App::FloatSeq
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:58:7: note: ‘MR::App::FloatSeq’ declared here
>    58 |       FloatSeq,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_in()’:
> ./core/cmdline_option.h:278:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   278 |           type = TracksIn;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:278:18: error: ‘TracksIn’ was not declared in this scope; did you mean ‘MR::App::TracksIn’?
>   278 |           type = TracksIn;
>       |                  ^~~~~~~~
>       |                  MR::App::TracksIn
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:59:7: note: ‘MR::App::TracksIn’ declared here
>    59 |       TracksIn,
>       |       ^~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_tracks_out()’:
> ./core/cmdline_option.h:285:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   285 |           type = TracksOut;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:285:18: error: ‘TracksOut’ was not declared in this scope; did you mean ‘MR::App::TracksOut’?
>   285 |           type = TracksOut;
>       |                  ^~~~~~~~~
>       |                  MR::App::TracksOut
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:60:7: note: ‘MR::App::TracksOut’ declared here
>    60 |       TracksOut,
>       |       ^~~~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: In member function ‘MR::App::Argument& MR::App::Argument::type_various()’:
> ./core/cmdline_option.h:292:11: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   292 |           type = Various;
>       |           ^~~~
>       |           wctype
> ./core/cmdline_option.h:292:18: error: ‘Various’ was not declared in this scope; did you mean ‘MR::App::Various’?
>   292 |           type = Various;
>       |                  ^~~~~~~
>       |                  MR::App::Various
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:61:7: note: ‘MR::App::Various’ declared here
>    61 |       Various
>       |       ^~~~~~~
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h: At global scope:
> ./core/cmdline_option.h:343:33: error: expected template-name before ‘<’ token
>   343 |     class Option : public vector<Argument> { NOMEMALIGN
>       |                                 ^
> ./core/cmdline_option.h:343:33: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:343:33: error: expected unqualified-id before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected template-name before ‘<’ token
>   418 |     class OptionGroup : public vector<Option> { NOMEMALIGN
>       |                                      ^
> ./core/cmdline_option.h:418:38: error: expected ‘{’ before ‘<’ token
> ./core/cmdline_option.h:418:38: error: expected unqualified-id before ‘<’ token
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::exists(const string&)’:
> ./core/file/path.h:99:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    99 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::is_dir(const string&)’:
> ./core/file/path.h:115:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   115 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::is_file(const string&)’:
> ./core/file/path.h:125:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   125 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)’:
> ./core/file/path.h:140:57: error: definition of ‘auto Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>’ [-fpermissive]
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:140:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:136:17: note: ‘Eigen::has_suffix’ declared here
>   136 |     inline bool has_suffix (const std::string &name, const std::initializer_list<const std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: At global scope:
> ./core/file/path.h:143:60: error: ‘vector’ does not name a type
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                            ^~~~~~
> ./core/file/path.h:143:66: error: expected ‘,’ or ‘...’ before ‘<’ token
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                                  ^
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, int)’:
> ./core/file/path.h:145:27: error: ‘suffix_list’ was not declared in this scope
>   145 |       return std::any_of (suffix_list.begin(),
>       |                           ^~~~~~~~~~~
> ./core/file/path.h:147:57: error: definition of ‘auto Eigen::has_suffix(const string&, int)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, int)::<lambda>’ [-fpermissive]
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:147:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:143:17: note: ‘Eigen::has_suffix’ declared here
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: In function ‘bool Eigen::is_mrtrix_image(const string&)’:
> ./core/file/path.h:153:9: error: ‘Path’ has not been declared
>   153 |         Path::has_suffix (name, {".mif", ".mih", ".mif.gz"});
>       |         ^~~~
> ./core/file/path.h: In function ‘std::string Eigen::cwd()’:
> ./core/file/path.h:165:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   165 |           throw Exception ("failed to get current working directory!");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘std::string Eigen::home()’:
> ./core/file/path.h:175:15: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   175 |         throw Exception (HOME_ENV " environment variable is not set!");
>       |               ^~~~~~~~~
>       |               MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In constructor ‘MR::Path::Dir::Dir(const string&)’:
> ./core/file/path.h:184:19: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   184 |             throw Exception ("error opening folder " + name + ": " + strerror (errno));
>       |                   ^~~~~~~~~
>       |                   MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h: In function ‘char Eigen::delimiter(const string&)’:
> ./core/file/path.h:216:11: error: ‘Path’ has not been declared
>   216 |       if (Path::has_suffix (filename, ".tsv"))
>       |           ^~~~
> ./core/file/path.h:218:16: error: ‘Path’ has not been declared
>   218 |       else if (Path::has_suffix (filename, ".csv"))
>       |                ^~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h: At global scope:
> ./core/app.h:62:46: error: expected primary-expression before ‘type’
>    62 |     const char* argtype_description (ArgType type);
>       |                                              ^~~~
> ./core/app.h:76:38: error: expected template-name before ‘<’ token
>    76 |     class Description : public vector<const char*> { NOMEMALIGN
>       |                                      ^
> ./core/app.h:76:38: error: expected ‘{’ before ‘<’ token
> ./core/app.h:76:38: error: expected unqualified-id before ‘<’ token
> ./core/app.h:110:38: error: expected template-name before ‘<’ token
>   110 |     class ExampleList : public vector<Example> { NOMEMALIGN
>       |                                      ^
> ./core/app.h:110:38: error: expected ‘{’ before ‘<’ token
> ./core/app.h:110:38: error: expected unqualified-id before ‘<’ token
> ./core/app.h:124:39: error: expected template-name before ‘<’ token
>   124 |     class ArgumentList : public vector<Argument> { NOMEMALIGN
>       |                                       ^
> ./core/app.h:124:39: error: expected ‘{’ before ‘<’ token
> ./core/app.h:124:39: error: expected unqualified-id before ‘<’ token
> ./core/app.h:139:37: error: expected template-name before ‘<’ token
>   139 |     class OptionList : public vector<OptionGroup> { NOMEMALIGN
>       |                                     ^
> ./core/app.h:139:37: error: expected ‘{’ before ‘<’ token
> ./core/app.h:139:37: error: expected unqualified-id before ‘<’ token
> ./core/app.h: In function ‘void Eigen::check_overwrite(const string&)’:
> ./core/app.h:170:11: error: ‘Path’ has not been declared
>   170 |       if (Path::exists (name) && !overwrite_files) {
>       |           ^~~~
> ./core/app.h:170:35: error: ‘overwrite_files’ was not declared in this scope; did you mean ‘Eigen::overwrite_files’?
>   170 |       if (Path::exists (name) && !overwrite_files) {
>       |                                   ^~~~~~~~~~~~~~~
>       |                                   Eigen::overwrite_files
> ./core/app.h:49:17: note: ‘Eigen::overwrite_files’ declared here
>    49 |     extern bool overwrite_files;
>       |                 ^~~~~~~~~~~~~~~
> ./core/app.h:171:13: error: ‘check_overwrite_files_func’ was not declared in this scope; did you mean ‘Eigen::check_overwrite_files_func’?
>   171 |         if (check_overwrite_files_func)
>       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
>       |             Eigen::check_overwrite_files_func
> ./core/app.h:50:19: note: ‘Eigen::check_overwrite_files_func’ declared here
>    50 |     extern void (*check_overwrite_files_func) (const std::string& name);
>       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
> ./core/app.h:174:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   174 |           throw Exception ("output file \"" + name + "\" already exists (use -force option to force overwrite)");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h: At global scope:
> ./core/app.h:200:11: error: ‘Option’ does not name a type
>   200 |     const Option* match_option (const char* stub);
>       |           ^~~~~~
> ./core/app.h:217:9: error: ‘default_type’ does not name a type
>   217 |         default_type as_float () const;
>       |         ^~~~~~~~~~~~
> ./core/app.h:219:9: error: ‘vector’ does not name a type
>   219 |         vector<int32_t> as_sequence_int () const {
>       |         ^~~~~~
> ./core/app.h:226:9: error: ‘vector’ does not name a type
>   226 |         vector<uint32_t> as_sequence_uint () const {
>       |         ^~~~~~
> ./core/app.h:233:9: error: ‘vector’ does not name a type
>   233 |         vector<default_type> as_sequence_float () const {
>       |         ^~~~~~
> ./core/app.h:249:18: error: ‘vector’ does not name a type
>   249 |         operator vector<int32_t> () const { return as_sequence_int(); }
>       |                  ^~~~~~
> ./core/app.h:250:18: error: ‘vector’ does not name a type
>   250 |         operator vector<uint32_t> () const { return as_sequence_uint(); }
>       |                  ^~~~~~
> ./core/app.h:251:18: error: ‘vector’ does not name a type
>   251 |         operator vector<default_type> () const { return as_sequence_float(); }
>       |                  ^~~~~~
> ./core/app.h:256:15: error: ‘Option’ does not name a type
>   256 |         const Option* opt;
>       |               ^~~~~~
> ./core/app.h:257:15: error: ‘Argument’ does not name a type
>   257 |         const Argument* arg;
>       |               ^~~~~~~~
> ./core/app.h:260:31: error: ‘Option’ does not name a type
>   260 |         ParsedArgument (const Option* option, const Argument* argument, const char* text) :
>       |                               ^~~~~~
> ./core/app.h:260:53: error: ‘Argument’ does not name a type
>   260 |         ParsedArgument (const Option* option, const Argument* argument, const char* text) :
>       |                                                     ^~~~~~~~
> ./core/app.h:265:21: error: ‘Exception’ has not been declared
>   265 |         void error (Exception& e) const {
>       |                     ^~~~~~~~~
> ./core/app.h: In member function ‘bool MR::App::ParsedArgument::as_bool() const’:
> ./core/app.h:214:40: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                        ^~
>       |                                        Eigen::to
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> In file included from core/file/config.cpp:17:
> ./core/app.h:214:43: error: expected primary-expression before ‘bool’
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                           ^~~~
> ./core/app.h:214:43: error: expected ‘;’ before ‘bool’
> ./core/app.h:214:47: error: expected unqualified-id before ‘>’ token
>   214 |         bool as_bool () const { return to<bool> (p); }
>       |                                               ^
> ./core/app.h: In member function ‘MR::App::ParsedArgument::operator float() const’:
> ./core/app.h:247:42: error: ‘as_float’ was not declared in this scope; did you mean ‘cfloat’?
>   247 |         operator float () const { return as_float(); }
>       |                                          ^~~~~~~~
>       |                                          cfloat
> ./core/app.h: In member function ‘MR::App::ParsedArgument::operator double() const’:
> ./core/app.h:248:43: error: ‘as_float’ was not declared in this scope; did you mean ‘cfloat’?
>   248 |         operator double () const { return as_float(); }
>       |                                           ^~~~~~~~
>       |                                           cfloat
> ./core/app.h: In constructor ‘MR::App::ParsedArgument::ParsedArgument(const int*, const int*, const char*)’:
> ./core/app.h:261:11: error: class ‘MR::App::ParsedArgument’ does not have any field named ‘opt’
>   261 |           opt (option), arg (argument), p (text) {
>       |           ^~~
> ./core/app.h:261:25: error: class ‘MR::App::ParsedArgument’ does not have any field named ‘arg’
>   261 |           opt (option), arg (argument), p (text) {
>       |                         ^~~
> ./core/app.h: In member function ‘void MR::App::ParsedArgument::error(int&) const’:
> ./core/app.h:268:15: error: ‘opt’ was not declared in this scope
>   268 |           if (opt) msg += std::string ("\" for option \"") + opt->id + "\"";
>       |               ^~~
> ./core/app.h:269:63: error: overloaded function with no contextual type information
>   269 |           else msg += std::string ("\" for argument \"") + arg->id + "\"";
>       |                                                               ^~
> ./core/app.h:270:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   270 |           throw Exception (e, msg);
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h: At global scope:
> ./core/app.h:288:29: error: ‘Option’ does not name a type
>   288 |         ParsedOption (const Option* option, const char* const* arguments) :
>       |                             ^~~~~~
> ./core/app.h:313:15: error: ‘Option’ does not name a type
>   313 |         const Option* opt;
>       |               ^~~~~~
> ./core/app.h:317:15: error: ‘ParsedArgument’ does not name a type
>   317 |         const ParsedArgument operator[] (size_t num) const {
>       |               ^~~~~~~~~~~~~~
> ./core/app.h: In constructor ‘MR::App::ParsedOption::ParsedOption(const int*, const char* const*)’:
> ./core/app.h:289:13: error: class ‘MR::App::ParsedOption’ does not have any field named ‘opt’
>   289 |             opt (option), args (arguments)
>       |             ^~~
> ./core/app.h:291:43: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   291 |           for (size_t i = 0; i != option->size(); ++i) {
>       |                                           ^~~~
> ./core/app.h:293:18: error: ‘consume_dash’ was not declared in this scope; did you mean ‘Eigen::consume_dash’?
>   293 |             if (!consume_dash (p))
>       |                  ^~~~~~~~~~~~
>       |                  Eigen::consume_dash
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:236:15: note: ‘Eigen::consume_dash’ declared here
>   236 |   inline bool consume_dash (const char*& arg)
>       |               ^~~~~~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:295:28: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                            ^
> ./core/app.h:295:40: error: ‘ImageIn’ was not declared in this scope; did you mean ‘MR::App::ImageIn’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                        ^~~~~~~
>       |                                        MR::App::ImageIn
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:55:7: note: ‘MR::App::ImageIn’ declared here
>    55 |       ImageIn,
>       |       ^~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:295:60: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                            ^
> ./core/app.h:295:72: error: ‘ImageOut’ was not declared in this scope; did you mean ‘MR::App::ImageOut’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                                        ^~~~~~~~
>       |                                                                        MR::App::ImageOut
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:56:7: note: ‘MR::App::ImageOut’ declared here
>    56 |       ImageOut,
>       |       ^~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:295:86: error: ‘is_dash’ was not declared in this scope; did you mean ‘Eigen::is_dash’?
>   295 |             if (( (*option)[i].type == ImageIn || (*option)[i].type == ImageOut ) && is_dash (arguments[i]))
>       |                                                                                      ^~~~~~~
>       |                                                                                      Eigen::is_dash
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:225:17: note: ‘Eigen::is_dash’ declared here
>   225 |   inline size_t is_dash (const std::string& arg)
>       |                 ^~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:297:26: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                          ^
> ./core/app.h:297:38: error: ‘Integer’ was not declared in this scope; did you mean ‘MR::App::Integer’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                      ^~~~~~~
>       |                                      MR::App::Integer
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:48:7: note: ‘MR::App::Integer’ declared here
>    48 |       Integer,
>       |       ^~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:297:58: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                          ^
> ./core/app.h:297:70: error: ‘Float’ was not declared in this scope; did you mean ‘MR::App::Float’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                      ^~~~~
>       |                                                                      MR::App::Float
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:49:7: note: ‘MR::App::Float’ declared here
>    49 |       Float,
>       |       ^~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:297:88: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                                        ^
> ./core/app.h:297:100: error: ‘IntSeq’ was not declared in this scope; did you mean ‘MR::App::IntSeq’?
>   297 |             if ((*option)[i].type == Integer || (*option)[i].type == Float || (*option)[i].type == IntSeq ||
>       |                                                                                                    ^~~~~~
>       |                                                                                                    MR::App::IntSeq
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:57:7: note: ‘MR::App::IntSeq’ declared here
>    57 |       IntSeq,
>       |       ^~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:298:26: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                          ^
> ./core/app.h:298:38: error: ‘FloatSeq’ was not declared in this scope; did you mean ‘MR::App::FloatSeq’?
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                      ^~~~~~~~
>       |                                      MR::App::FloatSeq
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:58:7: note: ‘MR::App::FloatSeq’ declared here
>    58 |       FloatSeq,
>       |       ^~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:298:59: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                                           ^
> ./core/app.h:298:71: error: ‘Various’ was not declared in this scope; did you mean ‘MR::App::Various’?
>   298 |                 (*option)[i].type == FloatSeq || (*option)[i].type == Various)
>       |                                                                       ^~~~~~~
>       |                                                                       MR::App::Various
> In file included from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/cmdline_option.h:61:7: note: ‘MR::App::Various’ declared here
>    61 |       Various
>       |       ^~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/app.h:301:27: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   301 |                 ((option->size() == 1) ?
>       |                           ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:303:47: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   303 |                  ("one of the " + str(option->size()) + " expected arguments ")) +
>       |                                               ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:303:35: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   303 |                  ("one of the " + str(option->size()) + " expected arguments ")) +
>       |                                   ^~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/app.h:304:44: error: request for member ‘id’ in ‘* option’, which is of non-class type ‘const int’
>   304 |                 "for option \"-" + option->id + "\", yet this itself looks like a separate command-line option; " +
>       |                                            ^~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:306:27: error: request for member ‘size’ in ‘* option’, which is of non-class type ‘const int’
>   306 |                 ((option->size() == 1) ? " " : "s ") +
>       |                           ^~~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/app.h:307:56: error: request for member ‘id’ in ‘* option’, which is of non-class type ‘const int’
>   307 |                 "to command-line option \"-" + option->id + "\" may have been erroneously omitted, which may cause " +
>       |                                                        ^~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> ./core/app.h:300:13: note: in expansion of macro ‘WARN’
>   300 |             WARN (std::string("Value \"") + arguments[i] + "\" is being used as " +
>       |             ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h: In member function ‘bool MR::App::ParsedOption::operator==(const char*) const’:
> ./core/app.h:324:30: error: ‘lowercase’ was not declared in this scope; did you mean ‘Eigen::lowercase’?
>   324 |           std::string name = lowercase (match);
>       |                              ^~~~~~~~~
>       |                              Eigen::lowercase
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:98:22: note: ‘Eigen::lowercase’ declared here
>    98 |   inline std::string lowercase (const std::string& string)
>       |                      ^~~~~~~~~
> In file included from core/file/config.cpp:17:
> ./core/app.h:325:26: error: ‘opt’ was not declared in this scope
>   325 |           return name == opt->id;
>       |                          ^~~
> ./core/app.h: At global scope:
> ./core/app.h:332:12: error: ‘vector’ does not name a type
>   332 |     extern vector<ParsedArgument> argument;
>       |            ^~~~~~
> ./core/app.h:334:12: error: ‘vector’ does not name a type
>   334 |     extern vector<ParsedOption> option;
>       |            ^~~~~~
> ./core/app.h:350:12: error: ‘Description’ does not name a type
>   350 |     extern Description DESCRIPTION;
>       |            ^~~~~~~~~~~
> ./core/app.h:369:12: error: ‘ExampleList’ does not name a type
>   369 |     extern ExampleList EXAMPLES;
>       |            ^~~~~~~~~~~
> ./core/app.h:386:12: error: ‘ArgumentList’ does not name a type
>   386 |     extern ArgumentList ARGUMENTS;
>       |            ^~~~~~~~~~~~
> ./core/app.h:405:12: error: ‘OptionList’ does not name a type
>   405 |     extern OptionList OPTIONS;
>       |            ^~~~~~~~~~
> ./core/app.h:425:12: error: ‘Description’ does not name a type
>   425 |     extern Description REFERENCES;
>       |            ^~~~~~~~~~~
> ./core/app.h:429:12: error: ‘OptionGroup’ does not name a type
>   429 |     extern OptionGroup __standard_options;
>       |            ^~~~~~~~~~~
> ./core/app.h:451:11: error: ‘vector’ does not name a type
>   451 |     const vector<ParsedOption> get_options (const std::string& name);
>       |           ^~~~~~
> ./core/app.h: In function ‘T Eigen::get_option_value(const string&, T)’:
> ./core/app.h:467:18: error: there are no arguments to ‘get_options’ that depend on a template parameter, so a declaration of ‘get_options’ must be available [-fpermissive]
>   467 |       auto opt = get_options(name);
>       |                  ^~~~~~~~~~~
> ./core/app.h: At global scope:
> ./core/app.h:474:59: error: ‘App’ does not name a type
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                           ^~~
> ./core/app.h:474:78: error: expected unqualified-id before ‘&’ token
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                                              ^
> ./core/app.h:474:78: error: expected ‘)’ before ‘&’ token
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                  ~                                           ^
>       |                                                                              )
> ./core/app.h:474:80: error: expected initializer before ‘right’
>   474 |     inline std::string operator+ (const char* left, const App::ParsedArgument& right)
>       |                                                                                ^~~~~
> ./core/app.h:482:66: error: ‘App’ does not name a type
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                  ^~~
> ./core/app.h:482:85: error: expected unqualified-id before ‘&’ token
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                                     ^
> ./core/app.h:482:85: error: expected ‘)’ before ‘&’ token
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                     ~                                               ^
>       |                                                                                     )
> ./core/app.h:482:87: error: expected initializer before ‘arg’
>   482 |     inline std::ostream& operator<< (std::ostream& stream, const App::ParsedArgument& arg)
>       |                                                                                       ^~~
> In file included from ./core/header.h:27,
>                  from core/file/config.cpp:19:
> ./core/datatype.h:184:14: error: ‘App’ does not name a type
>   184 |       static App::OptionGroup options ();
>       |              ^~~
> ./core/datatype.h: In member function ‘bool MR::DataType::is_byte_order_native()’:
> ./core/datatype.h:70:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    70 |           throw Exception ("byte order not set!");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from ./core/header.h:27,
>                  from core/file/config.cpp:19:
> ./core/datatype.h: At global scope:
> ./core/datatype.h:200:22: error: ‘DataType’ does not name a type
>   200 |   template <> inline DataType DataType::from<bool> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:204:22: error: ‘DataType’ does not name a type
>   204 |   template <> inline DataType DataType::from<int8_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:208:22: error: ‘DataType’ does not name a type
>   208 |   template <> inline DataType DataType::from<uint8_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:212:22: error: ‘DataType’ does not name a type
>   212 |   template <> inline DataType DataType::from<int16_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:216:22: error: ‘DataType’ does not name a type
>   216 |   template <> inline DataType DataType::from<uint16_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:220:22: error: ‘DataType’ does not name a type
>   220 |   template <> inline DataType DataType::from<int32_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:224:22: error: ‘DataType’ does not name a type
>   224 |   template <> inline DataType DataType::from<uint32_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:228:22: error: ‘DataType’ does not name a type
>   228 |   template <> inline DataType DataType::from<int64_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:232:22: error: ‘DataType’ does not name a type
>   232 |   template <> inline DataType DataType::from<uint64_t> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:236:22: error: ‘DataType’ does not name a type
>   236 |   template <> inline DataType DataType::from<float> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:240:22: error: ‘DataType’ does not name a type
>   240 |   template <> inline DataType DataType::from<double> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:244:22: error: ‘DataType’ does not name a type
>   244 |   template <> inline DataType DataType::from<cfloat> ()
>       |                      ^~~~~~~~
> ./core/datatype.h:248:22: error: ‘DataType’ does not name a type
>   248 |   template <> inline DataType DataType::from<cdouble> ()
>       |                      ^~~~~~~~
> In file included from /usr/include/c++/11/fstream:42,
>                  from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/x86_64-linux-gnu/c++/11/bits/basic_file.h:54:11: error: ‘__basic_file’ is not a class template
>    54 |     class __basic_file<char>
>       |           ^~~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/basic_file.h:54:28: error: template specifiers not specified in declaration of ‘template<class _CharT> class std::__basic_file’
>    54 |     class __basic_file<char>
>       |                            ^
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:85:49: error: expected template-name before ‘<’ token
>    85 |     class basic_filebuf : public basic_streambuf<_CharT, _Traits>
>       |                                                 ^
> /usr/include/c++/11/fstream:85:49: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:497:48: error: expected template-name before ‘<’ token
>   497 |     class basic_ifstream : public basic_istream<_CharT, _Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:497:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:758:48: error: expected template-name before ‘<’ token
>   758 |     class basic_ofstream : public basic_ostream<_CharT,_Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:758:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:1021:48: error: expected template-name before ‘<’ token
>  1021 |     class basic_fstream : public basic_iostream<_CharT, _Traits>
>       |                                                ^
> /usr/include/c++/11/fstream:1021:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/fstream:1269:5: error: variable or field ‘swap’ declared void
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1269:10: error: ‘basic_filebuf’ was not declared in this scope; did you mean ‘std::basic_filebuf’?
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~
>       |          std::basic_filebuf
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:113:11: note: ‘std::basic_filebuf’ declared here
>   113 |     class basic_filebuf;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1269:30: error: expected primary-expression before ‘,’ token
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                              ^
> /usr/include/c++/11/fstream:1269:39: error: expected primary-expression before ‘>’ token
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                                       ^
> /usr/include/c++/11/fstream:1269:42: error: ‘__x’ was not declared in this scope
>  1269 |     swap(basic_filebuf<_CharT, _Traits>& __x,
>       |                                          ^~~
> /usr/include/c++/11/fstream:1270:10: error: ‘basic_filebuf’ was not declared in this scope; did you mean ‘std::basic_filebuf’?
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~
>       |          std::basic_filebuf
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:113:11: note: ‘std::basic_filebuf’ declared here
>   113 |     class basic_filebuf;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1270:30: error: expected primary-expression before ‘,’ token
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                              ^
> /usr/include/c++/11/fstream:1270:39: error: expected primary-expression before ‘>’ token
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                                       ^
> /usr/include/c++/11/fstream:1270:42: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1270 |          basic_filebuf<_CharT, _Traits>& __y)
>       |                                          ^~~
>       |                                          __yn
> /usr/include/c++/11/fstream:1276:5: error: variable or field ‘swap’ declared void
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1276:10: error: ‘basic_ifstream’ was not declared in this scope; did you mean ‘std::basic_ifstream’?
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ifstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:116:11: note: ‘std::basic_ifstream’ declared here
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1276:31: error: expected primary-expression before ‘,’ token
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                               ^
> /usr/include/c++/11/fstream:1276:40: error: expected primary-expression before ‘>’ token
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                                        ^
> /usr/include/c++/11/fstream:1276:43: error: ‘__x’ was not declared in this scope
>  1276 |     swap(basic_ifstream<_CharT, _Traits>& __x,
>       |                                           ^~~
> /usr/include/c++/11/fstream:1277:10: error: ‘basic_ifstream’ was not declared in this scope; did you mean ‘std::basic_ifstream’?
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ifstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:116:11: note: ‘std::basic_ifstream’ declared here
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1277:31: error: expected primary-expression before ‘,’ token
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                               ^
> /usr/include/c++/11/fstream:1277:40: error: expected primary-expression before ‘>’ token
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                                        ^
> /usr/include/c++/11/fstream:1277:43: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1277 |          basic_ifstream<_CharT, _Traits>& __y)
>       |                                           ^~~
>       |                                           __yn
> /usr/include/c++/11/fstream:1283:5: error: variable or field ‘swap’ declared void
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1283:10: error: ‘basic_ofstream’ was not declared in this scope; did you mean ‘std::basic_ofstream’?
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ofstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:119:11: note: ‘std::basic_ofstream’ declared here
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1283:31: error: expected primary-expression before ‘,’ token
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                               ^
> /usr/include/c++/11/fstream:1283:40: error: expected primary-expression before ‘>’ token
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                                        ^
> /usr/include/c++/11/fstream:1283:43: error: ‘__x’ was not declared in this scope
>  1283 |     swap(basic_ofstream<_CharT, _Traits>& __x,
>       |                                           ^~~
> /usr/include/c++/11/fstream:1284:10: error: ‘basic_ofstream’ was not declared in this scope; did you mean ‘std::basic_ofstream’?
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~~
>       |          std::basic_ofstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:119:11: note: ‘std::basic_ofstream’ declared here
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1284:31: error: expected primary-expression before ‘,’ token
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                               ^
> /usr/include/c++/11/fstream:1284:40: error: expected primary-expression before ‘>’ token
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                                        ^
> /usr/include/c++/11/fstream:1284:43: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1284 |          basic_ofstream<_CharT, _Traits>& __y)
>       |                                           ^~~
>       |                                           __yn
> /usr/include/c++/11/fstream:1290:5: error: variable or field ‘swap’ declared void
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |     ^~~~
> /usr/include/c++/11/fstream:1290:10: error: ‘basic_fstream’ was not declared in this scope; did you mean ‘std::basic_fstream’?
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |          ^~~~~~~~~~~~~
>       |          std::basic_fstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:122:11: note: ‘std::basic_fstream’ declared here
>   122 |     class basic_fstream;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1290:30: error: expected primary-expression before ‘,’ token
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                              ^
> /usr/include/c++/11/fstream:1290:39: error: expected primary-expression before ‘>’ token
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                                       ^
> /usr/include/c++/11/fstream:1290:42: error: ‘__x’ was not declared in this scope
>  1290 |     swap(basic_fstream<_CharT, _Traits>& __x,
>       |                                          ^~~
> /usr/include/c++/11/fstream:1291:10: error: ‘basic_fstream’ was not declared in this scope; did you mean ‘std::basic_fstream’?
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |          ^~~~~~~~~~~~~
>       |          std::basic_fstream
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:122:11: note: ‘std::basic_fstream’ declared here
>   122 |     class basic_fstream;
>       |           ^~~~~~~~~~~~~
> In file included from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/fstream:1291:30: error: expected primary-expression before ‘,’ token
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                              ^
> /usr/include/c++/11/fstream:1291:39: error: expected primary-expression before ‘>’ token
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                                       ^
> /usr/include/c++/11/fstream:1291:42: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  1291 |          basic_fstream<_CharT, _Traits>& __y)
>       |                                          ^~~
>       |                                          __yn
> In file included from /usr/include/c++/11/fstream:1298,
>                  from ./core/file/key_value.h:20,
>                  from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> /usr/include/c++/11/bits/fstream.tcc:49:18: error: expected initializer before ‘<’ token
>    49 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:63:18: error: expected initializer before ‘<’ token
>    63 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:80:5: error: ‘basic_filebuf’ does not name a type
>    80 |     basic_filebuf<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:95:5: error: ‘basic_filebuf’ does not name a type
>    95 |     basic_filebuf<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:123:5: error: ‘basic_filebuf’ does not name a type
>   123 |     basic_filebuf<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:153:18: error: expected initializer before ‘<’ token
>   153 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:178:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   178 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:178:27: error: expected initializer before ‘<’ token
>   178 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:248:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   248 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:248:27: error: expected initializer before ‘<’ token
>   248 |     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:296:5: error: ‘streamsize’ does not name a type
>   296 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:322:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   322 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:322:27: error: expected initializer before ‘<’ token
>   322 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:481:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   481 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:481:27: error: expected initializer before ‘<’ token
>   481 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:540:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   540 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:540:27: error: expected initializer before ‘<’ token
>   540 |     typename basic_filebuf<_CharT, _Traits>::int_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:606:18: error: expected initializer before ‘<’ token
>   606 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:668:5: error: ‘streamsize’ does not name a type
>   668 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:754:5: error: ‘streamsize’ does not name a type
>   754 |     streamsize
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:802:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   802 |     typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:802:27: error: expected initializer before ‘<’ token
>   802 |     typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:831:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   831 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:831:27: error: expected initializer before ‘<’ token
>   831 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:891:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   891 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:891:27: error: expected initializer before ‘<’ token
>   891 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:906:14: error: expected nested-name-specifier before ‘basic_filebuf’
>   906 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |              ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:906:27: error: expected initializer before ‘<’ token
>   906 |     typename basic_filebuf<_CharT, _Traits>::pos_type
>       |                           ^
> /usr/include/c++/11/bits/fstream.tcc:932:22: error: expected initializer before ‘<’ token
>   932 |     int basic_filebuf<_CharT, _Traits>::
>       |                      ^
> /usr/include/c++/11/bits/fstream.tcc:951:18: error: expected initializer before ‘<’ token
>   951 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1012:18: error: expected initializer before ‘<’ token
>  1012 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1029:18: error: expected initializer before ‘<’ token
>  1029 |     basic_filebuf<_CharT, _Traits>::
>       |                  ^
> /usr/include/c++/11/bits/fstream.tcc:1086:25: error: ‘basic_filebuf’ is not a class template
>  1086 |   extern template class basic_filebuf<char>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1086:25: error: template argument required for ‘class basic_filebuf’
> /usr/include/c++/11/bits/fstream.tcc:1087:25: error: ‘basic_ifstream’ is not a class template
>  1087 |   extern template class basic_ifstream<char>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1087:25: error: template argument required for ‘class basic_ifstream’
> /usr/include/c++/11/bits/fstream.tcc:1088:25: error: ‘basic_ofstream’ is not a class template
>  1088 |   extern template class basic_ofstream<char>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1088:25: error: template argument required for ‘class basic_ofstream’
> /usr/include/c++/11/bits/fstream.tcc:1089:25: error: ‘basic_fstream’ is not a class template
>  1089 |   extern template class basic_fstream<char>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1089:25: error: template argument required for ‘class basic_fstream’
> /usr/include/c++/11/bits/fstream.tcc:1092:25: error: ‘basic_filebuf’ is not a class template
>  1092 |   extern template class basic_filebuf<wchar_t>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1092:25: error: template argument required for ‘class basic_filebuf’
> /usr/include/c++/11/bits/fstream.tcc:1093:25: error: ‘basic_ifstream’ is not a class template
>  1093 |   extern template class basic_ifstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1093:25: error: template argument required for ‘class basic_ifstream’
> /usr/include/c++/11/bits/fstream.tcc:1094:25: error: ‘basic_ofstream’ is not a class template
>  1094 |   extern template class basic_ofstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1094:25: error: template argument required for ‘class basic_ofstream’
> /usr/include/c++/11/bits/fstream.tcc:1095:25: error: ‘basic_fstream’ is not a class template
>  1095 |   extern template class basic_fstream<wchar_t>;
>       |                         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/fstream.tcc:1095:25: error: template argument required for ‘class basic_fstream’
> In file included from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/file/key_value.h:61:25: error: field ‘in’ has incomplete type ‘std::ifstream’ {aka ‘std::basic_ifstream<char>’}
>    61 |           std::ifstream in;
>       |                         ^~
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:116:11: note: declaration of ‘std::ifstream’ {aka ‘class std::basic_ifstream<char>’}
>   116 |     class basic_ifstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/math/math.h:27,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/file/key_value.h:67:12: error: variable or field ‘write’ declared void
>    67 |       void write (File::OFStream& out,
>       |            ^~~~~
> ./core/file/key_value.h:67:19: error: ‘File’ has not been declared
>    67 |       void write (File::OFStream& out,
>       |                   ^~~~
> ./core/file/key_value.h:67:35: error: ‘out’ was not declared in this scope
>    67 |       void write (File::OFStream& out,
>       |                                   ^~~
> ./core/file/key_value.h:68:19: error: expected primary-expression before ‘const’
>    68 |                   const KeyValues& keyvals,
>       |                   ^~~~~
> ./core/file/key_value.h:69:19: error: expected primary-expression before ‘const’
>    69 |                   const std::string& prefix,
>       |                   ^~~~~
> ./core/file/key_value.h:70:19: error: expected primary-expression before ‘const’
>    70 |                   const bool add_to_command_history = true);
>       |                   ^~~~~
> In file included from ./core/math/math.h:28,
>                  from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/file/ofstream.h:39:34: error: invalid use of incomplete type ‘std::ofstream’ {aka ‘class std::basic_ofstream<char>’}
>    39 |     class OFStream : public std::ofstream { NOMEMALIGN
>       |                                  ^~~~~~~~
> In file included from /usr/include/c++/11/bits/localefwd.h:41,
>                  from /usr/include/c++/11/string:43,
>                  from ./core/app.h:22,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/iosfwd:119:11: note: declaration of ‘std::ofstream’ {aka ‘class std::basic_ofstream<char>’}
>   119 |     class basic_ofstream;
>       |           ^~~~~~~~~~~~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h:128:9: error: ‘container_value_type’ is not a class template
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |         ^~~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:128:61: error: ‘is_eigen_type’ was not declared in this scope; did you mean ‘MR::is_eigen_type’?
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                             ^~~~~~~~~~~~~
>       |                                                             MR::is_eigen_type
> ./core/math/math.h:113:9: note: ‘MR::is_eigen_type’ declared here
>   113 |   class is_eigen_type { NOMEMALIGN
>       |         ^~~~~~~~~~~~~
> ./core/math/math.h:128:79: error: template argument 1 is invalid
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                               ^
> ./core/math/math.h:128:87: error: expected ‘(’ before ‘,’ token
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                                       ^
>       |                                                                                       (
> ./core/math/math.h:128:93: error: expected ‘{’ or ‘:’ before ‘::’ token
>   128 |   class container_value_type <Cont, typename std::enable_if<is_eigen_type<Cont>::value, int>::type> { NOMEMALIGN
>       |                                                                                             ^~
> ./core/math/math.h:128:93: error: expected ‘{’ before ‘::’ token
> ./core/math/math.h:136:79: error: ‘KeyValues’ does not name a type
>   136 |     void save_matrix (const MatrixType& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                               ^~~~~~~~~
> ./core/math/math.h:136:100: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   136 |     void save_matrix (const MatrixType& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                    ^~~~~~~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h: In function ‘void Eigen::save_matrix(const MatrixType&, const string&, const int&, bool)’:
> ./core/math/math.h:139:7: error: ‘File’ has not been declared
>   139 |       File::OFStream out (filename);
>       |       ^~~~
> ./core/math/math.h:140:7: error: ‘File’ has not been declared
>   140 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |       ^~~~
> ./core/math/math.h:140:30: error: ‘out’ was not declared in this scope
>   140 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                              ^~~
> ./core/math/math.h:141:88: error: ‘Path’ was not declared in this scope; did you mean ‘MR::Path’?
>   141 |       Eigen::IOFormat fmt (Eigen::FullPrecision, Eigen::DontAlignCols, std::string (1, Path::delimiter (filename)), "\n", "", "", "", "");
>       |                                                                                        ^~~~
>       |                                                                                        MR::Path
> In file included from ./core/app.h:31,
>                  from core/file/config.cpp:17:
> ./core/file/path.h:57:13: note: ‘MR::Path’ declared here
>    57 |   namespace Path
>       |             ^~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h: At global scope:
> ./core/math/math.h:147:31: error: ‘default_type’ does not name a type
>   147 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h:148:5: error: ‘vector’ does not name a type
>   148 |     vector<vector<ValueType>> load_matrix_2D_vector (const std::string& filename, vector<std::string>* comments = nullptr)
>       |     ^~~~~~
> ./core/math/math.h:195:31: error: ‘default_type’ does not name a type
>   195 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, -1> Eigen::load_matrix(const string&)’:
> ./core/exception.h:75:49: error: there are no arguments to ‘report_to_user_func’ that depend on a template parameter, so a declaration of ‘report_to_user_func’ must be available [-fpermissive]
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:198:7: note: in expansion of macro ‘DEBUG’
>   198 |       DEBUG ("loading matrix file \"" + filename + "\"...");
>       |       ^~~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h:199:13: error: ‘vector’ does not name a type
>   199 |       const vector<vector<ValueType>> V = load_matrix_2D_vector<ValueType> (filename);
>       |             ^~~~~~
> ./core/math/math.h:201:67: error: ‘V’ was not declared in this scope
>   201 |       Eigen::Matrix<ValueType, Eigen::Dynamic, Eigen::Dynamic> M (V.size(), V[0].size());
>       |                                                                   ^
> ./core/math/math.h: At global scope:
> ./core/math/math.h:211:31: error: ‘default_type’ does not name a type
>   211 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, -1> Eigen::parse_matrix(const string&)’:
> ./core/math/math.h:215:26: error: there are no arguments to ‘split_lines’ that depend on a template parameter, so a declaration of ‘split_lines’ must be available [-fpermissive]
>   215 |       const auto lines = split_lines (spec);
>       |                          ^~~~~~~~~~~
> ./core/math/math.h:221:17: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   221 |           throw Exception ("error converting string to matrix - uneven number of entries per row");
>       |                 ^~~~~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:230:10: error: ‘transform_type’ does not name a type
>   230 |   inline transform_type load_transform (const std::string& filename, VectorType& centre)
>       |          ^~~~~~~~~~~~~~
> ./core/math/math.h:281:10: error: ‘transform_type’ does not name a type
>   281 |   inline transform_type load_transform (const std::string& filename)
>       |          ^~~~~~~~~~~~~~
> ./core/math/math.h:288:37: error: ‘transform_type’ does not name a type
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                     ^~~~~~~~~~~~~~
> ./core/math/math.h:288:91: error: ‘KeyValues’ does not name a type
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                           ^~~~~~~~~
> ./core/math/math.h:288:112: error: ‘KeyValues’ was not declared in this scope; did you mean ‘MR::KeyValues’?
>   288 |   inline void save_transform (const transform_type& M, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                ^~~~~~~~~
>       |                                                                                                                MR::KeyValues
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:238:9: note: ‘MR::KeyValues’ declared here
>   238 |   using KeyValues = std::map<std::string, std::string>;
>       |         ^~~~~~~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/math/math.h: In function ‘void Eigen::save_transform(const int&, const string&, const int&, bool)’:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> ./core/math/math.h:290:5: note: in expansion of macro ‘DEBUG’
>   290 |     DEBUG ("saving transform to file \"" + filename + "\"...");
>       |     ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h:291:5: error: ‘File’ has not been declared
>   291 |     File::OFStream out (filename);
>       |     ^~~~
> ./core/math/math.h:292:5: error: ‘File’ has not been declared
>   292 |     File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |     ^~~~
> ./core/math/math.h:292:28: error: ‘out’ was not declared in this scope
>   292 |     File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                            ^~~
> ./core/math/math.h:293:19: error: ‘Path’ has not been declared
>   293 |     const char d (Path::delimiter (filename));
>       |                   ^~~~
> ./core/math/math.h:295:14: error: request for member ‘matrix’ in ‘M’, which is of non-class type ‘const int’
>   295 |     out << M.matrix().format (fmt);
>       |              ^~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:300:37: error: ‘transform_type’ does not name a type
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                     ^~~~~~~~~~~~~~
> ./core/math/math.h:300:133: error: ‘KeyValues’ does not name a type
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                                     ^~~~~~~~~
> ./core/math/math.h:300:154: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   300 |   inline void save_transform (const transform_type& M, const Eigen::MatrixBase<Derived>& centre, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                                                                          ^~~~~~~~~
> ./core/math/math.h: In function ‘void Eigen::save_transform(const int&, const Eigen::MatrixBase<Derived>&, const string&, const int&, bool)’:
> ./core/math/math.h:303:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   303 |       throw Exception ("save_transform() requires 3x1 vector as centre");
>       |             ^~~~~~~~~
> ./core/math/math.h:304:5: error: ‘KeyValues’ was not declared in this scope; did you mean ‘MR::KeyValues’?
>   304 |     KeyValues local_keyvals = keyvals;
>       |     ^~~~~~~~~
>       |     MR::KeyValues
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:238:9: note: ‘MR::KeyValues’ declared here
>   238 |   using KeyValues = std::map<std::string, std::string>;
>       |         ^~~~~~~~~
> In file included from ./core/stride.h:24,
>                  from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/math/math.h:308:5: error: ‘local_keyvals’ was not declared in this scope
>   308 |     local_keyvals.insert(std::pair<std::string, std::string>("centre",  os.str()));
>       |     ^~~~~~~~~~~~~
> ./core/math/math.h:309:5: error: there are no arguments to ‘save_transform’ that depend on a template parameter, so a declaration of ‘save_transform’ must be available [-fpermissive]
>   309 |     save_transform(M, filename, local_keyvals, add_to_command_history);
>       |     ^~~~~~~~~~~~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:314:79: error: ‘KeyValues’ does not name a type
>   314 |     void save_vector (const VectorType& V, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                               ^~~~~~~~~
> ./core/math/math.h:314:100: error: there are no arguments to ‘KeyValues’ that depend on a template parameter, so a declaration of ‘KeyValues’ must be available [-fpermissive]
>   314 |     void save_vector (const VectorType& V, const std::string& filename, const KeyValues& keyvals = KeyValues(), const bool add_to_command_history = true)
>       |                                                                                                    ^~~~~~~~~
> ./core/math/math.h: In function ‘void Eigen::save_vector(const VectorType&, const string&, const int&, bool)’:
> ./core/math/math.h:317:7: error: ‘File’ has not been declared
>   317 |       File::OFStream out (filename);
>       |       ^~~~
> ./core/math/math.h:318:7: error: ‘File’ has not been declared
>   318 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |       ^~~~
> ./core/math/math.h:318:30: error: ‘out’ was not declared in this scope
>   318 |       File::KeyValue::write (out, keyvals, "# ", add_to_command_history);
>       |                              ^~~
> ./core/math/math.h:319:21: error: ‘Path’ has not been declared
>   319 |       const char d (Path::delimiter (filename));
>       |                     ^~~~
> ./core/math/math.h: At global scope:
> ./core/math/math.h:326:31: error: ‘default_type’ does not name a type
>   326 |   template <class ValueType = default_type>
>       |                               ^~~~~~~~~~~~
> ./core/math/math.h: In function ‘Eigen::Matrix<Type, -1, 1> Eigen::load_vector(const string&)’:
> ./core/math/math.h:329:18: error: ‘load_matrix’ was not declared in this scope; did you mean ‘Eigen::load_matrix’?
>   329 |       auto vec = load_matrix<ValueType> (filename);
>       |                  ^~~~~~~~~~~
>       |                  Eigen::load_matrix
> ./core/math/math.h:196:62: note: ‘Eigen::load_matrix’ declared here
>   196 |     Eigen::Matrix<ValueType, Eigen::Dynamic, Eigen::Dynamic> load_matrix (const std::string& filename)
>       |                                                              ^~~~~~~~~~~
> ./core/math/math.h:329:39: error: expected primary-expression before ‘>’ token
>   329 |       auto vec = load_matrix<ValueType> (filename);
>       |                                       ^
> ./core/math/math.h:333:15: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   333 |         throw Exception ("file \"" + filename + "\" contains matrix, not vector");
>       |               ^~~~~~~~~
> In file included from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/stride.h: At global scope:
> ./core/stride.h:63:18: error: ‘vector’ does not name a type
>    63 |     using List = vector<ssize_t>;
>       |                  ^~~~~~
> ./core/stride.h:65:18: error: ‘App’ does not name a type
>    65 |     extern const App::OptionGroup Options;
>       |                  ^~~
> ./core/stride.h:90:24: error: expected ‘)’ before ‘&’ token
>    90 |           Wrapper (List& strides) : S (strides) { }
>       |                   ~    ^
>       |                        )
> ./core/stride.h:101:11: error: ‘List’ does not name a type
>   101 |           List& S;
>       |           ^~~~
> ./core/stride.h: In member function ‘std::size_t MR::Stride::{anonymous}::Wrapper::ndim() const’:
> ./core/stride.h:92:20: error: ‘S’ was not declared in this scope
>    92 |             return S.size();
>       |                    ^
> ./core/stride.h: In member function ‘const ssize_t& MR::Stride::{anonymous}::Wrapper::stride(std::size_t) const’:
> ./core/stride.h:95:20: error: ‘S’ was not declared in this scope
>    95 |             return S[axis];
>       |                    ^
> ./core/stride.h: In member function ‘ssize_t& MR::Stride::{anonymous}::Wrapper::stride(std::size_t)’:
> ./core/stride.h:98:20: error: ‘S’ was not declared in this scope
>    98 |             return S[axis];
>       |                    ^
> ./core/stride.h: At global scope:
> ./core/stride.h:106:7: error: expected class-name before ‘{’ token
>   106 |       { NOMEMALIGN
>       |       ^
> ./core/stride.h:108:28: error: expected ‘)’ before ‘&’ token
>   108 |           InfoWrapper (List& strides, const HeaderType& header) : Wrapper (strides), D (header) {
>       |                       ~    ^
>       |                            )
> ./core/stride.h:125:7: error: ‘List’ does not name a type
>   125 |       List get (const HeaderType& header)
>       |       ^~~~
> ./core/stride.h:135:43: error: ‘List’ does not name a type
>   135 |       void set (HeaderType& header, const List& stride)
>       |                                           ^~~~
> ./core/stride.h: In function ‘void Eigen::set(HeaderType&, const int&)’:
> ./core/stride.h:138:60: error: request for member ‘size’ in ‘stride’, which is of non-class type ‘const int’
>   138 |         for (; n < std::min<size_t> (header.ndim(), stride.size()); ++n)
>       |                                                            ^~~~
> ./core/stride.h:139:37: error: invalid types ‘const int[std::size_t {aka long unsigned int}]’ for array subscript
>   139 |           header.stride (n) = stride[n];
>       |                                     ^
> ./core/stride.h:140:27: error: request for member ‘size’ in ‘stride’, which is of non-class type ‘const int’
>   140 |         for (; n < stride.size(); ++n)
>       |                           ^~~~
> ./core/stride.h: At global scope:
> ./core/stride.h:159:7: error: ‘vector’ does not name a type
>   159 |       vector<size_t> order (const HeaderType& header, size_t from_axis = 0, size_t to_axis = std::numeric_limits<size_t>::max())
>       |       ^~~~~~
> In file included from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/stride.h:176:7: error: ‘vector’ does not name a type
>   176 |       vector<size_t> order<List> (const List& strides, size_t from_axis, size_t to_axis)
>       |       ^~~~~~
> ./core/stride.h:222:19: error: variable or field ‘sanitise’ declared void
>   222 |       inline void sanitise (List& strides, const HeaderType& header)
>       |                   ^~~~~~~~
> ./core/stride.h:222:29: error: ‘List’ was not declared in this scope
>   222 |       inline void sanitise (List& strides, const HeaderType& header)
>       |                             ^~~~
> ./core/stride.h:222:35: error: ‘strides’ was not declared in this scope; did you mean ‘Stride’?
>   222 |       inline void sanitise (List& strides, const HeaderType& header)
>       |                                   ^~~~~~~
>       |                                   Stride
> ./core/stride.h:222:44: error: expected primary-expression before ‘const’
>   222 |       inline void sanitise (List& strides, const HeaderType& header)
>       |                                            ^~~~~
> ./core/stride.h:234:5: error: ‘List’ does not name a type
>   234 |     List& sanitise (List& current, const List& desired, const vector<ssize_t>& header);
>       |     ^~~~
> ./core/stride.h: In function ‘void Eigen::actualise(HeaderType&)’:
> ./core/stride.h:242:9: error: ‘vector’ was not declared in this scope
>   242 |         vector<size_t> x (order (header));
>       |         ^~~~~~
> ./core/stride.h:242:9: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/stride.h:242:22: error: expected primary-expression before ‘>’ token
>   242 |         vector<size_t> x (order (header));
>       |                      ^
> ./core/stride.h:245:26: error: ‘x’ was not declared in this scope
>   245 |           header.stride (x[i]) = header.stride (x[i]) < 0 ? -skip : skip;
>       |                          ^
> ./core/stride.h: At global scope:
> ./core/stride.h:253:19: error: variable or field ‘actualise’ declared void
>   253 |       inline void actualise (List& strides, const HeaderType& header)
>       |                   ^~~~~~~~~
> ./core/stride.h:253:30: error: ‘List’ was not declared in this scope
>   253 |       inline void actualise (List& strides, const HeaderType& header)
>       |                              ^~~~
> ./core/stride.h:253:36: error: ‘strides’ was not declared in this scope; did you mean ‘Stride’?
>   253 |       inline void actualise (List& strides, const HeaderType& header)
>       |                                    ^~~~~~~
>       |                                    Stride
> ./core/stride.h:253:45: error: expected primary-expression before ‘const’
>   253 |       inline void actualise (List& strides, const HeaderType& header)
>       |                                             ^~~~~
> ./core/stride.h:261:14: error: ‘List’ does not name a type
>   261 |       inline List get_actual (HeaderType& header)
>       |              ^~~~
> ./core/stride.h:270:14: error: ‘List’ does not name a type
>   270 |       inline List get_actual (const List& strides, const HeaderType& header)
>       |              ^~~~
> ./core/stride.h: In function ‘void Eigen::symbolise(HeaderType&)’:
> ./core/stride.h:283:9: error: ‘vector’ was not declared in this scope
>   283 |         vector<size_t> p (order (header));
>       |         ^~~~~~
> ./core/stride.h:283:9: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/header.h:28,
>                  from core/file/config.cpp:19:
> ./core/stride.h:283:22: error: expected primary-expression before ‘>’ token
>   283 |         vector<size_t> p (order (header));
>       |                      ^
> ./core/stride.h:284:42: error: ‘p’ was not declared in this scope
>   284 |         for (ssize_t i = 0; i < ssize_t (p.size()); ++i)
>       |                                          ^
> ./core/stride.h: At global scope:
> ./core/stride.h:290:19: error: variable or field ‘symbolise’ declared void
>   290 |       inline void symbolise (List& strides)
>       |                   ^~~~~~~~~
> ./core/stride.h:290:30: error: ‘List’ was not declared in this scope
>   290 |       inline void symbolise (List& strides)
>       |                              ^~~~
> ./core/stride.h:290:36: error: ‘strides’ was not declared in this scope; did you mean ‘Stride’?
>   290 |       inline void symbolise (List& strides)
>       |                                    ^~~~~~~
>       |                                    Stride
> ./core/stride.h:298:14: error: ‘List’ does not name a type
>   298 |       inline List get_symbolic (const HeaderType& header)
>       |              ^~~~
> ./core/stride.h:307:14: error: ‘List’ does not name a type
>   307 |       inline List get_symbolic (const List& list)
>       |              ^~~~
> ./core/stride.h:333:22: error: ‘template<class HeaderType> std::size_t MR::Stride::offset’ conflicts with a previous declaration
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                      ^~~~
> ./core/stride.h:319:14: note: previous declaration ‘std::size_t Eigen::offset(const HeaderType&)’
>   319 |       size_t offset (const HeaderType& header)
>       |              ^~~~~~
> ./core/stride.h:333:22: error: ‘List’ was not declared in this scope
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                      ^~~~
> ./core/stride.h:333:28: error: ‘strides’ was not declared in this scope; did you mean ‘Stride’?
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                            ^~~~~~~
>       |                            Stride
> ./core/stride.h:333:37: error: expected primary-expression before ‘const’
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                                     ^~~~~
> ./core/stride.h:333:61: error: expression list treated as compound expression in initializer [-fpermissive]
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                                                             ^
> ./core/stride.h:333:14: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |              ^~~~~~
> ./core/stride.h:333:62: error: expected ‘;’ before ‘{’ token
>   333 |       size_t offset (List& strides, const HeaderType& header)
>       |                                                              ^
>       |                                                              ;
>   334 |       {
>       |       ~                                                       
> ./core/stride.h:364:7: error: ‘List’ does not name a type
>   364 |       List get_nearest_match (const HeaderType& current, const List& desired)
>       |       ^~~~
> ./core/stride.h:386:12: error: ‘List’ does not name a type
>   386 |     inline List contiguous_along_axis (size_t axis)
>       |            ^~~~
> ./core/stride.h:395:14: error: ‘List’ does not name a type
>   395 |       inline List contiguous_along_axis (size_t axis, const HeaderType& header)
>       |              ^~~~
> ./core/stride.h:402:14: error: ‘List’ does not name a type
>   402 |       inline List contiguous_along_spatial_axes (const HeaderType& header)
>       |              ^~~~
> ./core/stride.h:412:5: error: ‘List’ does not name a type
>   412 |     List __from_command_line (const List& current);
>       |     ^~~~
> ./core/stride.h:416:68: error: ‘List’ does not name a type
>   416 |       inline void set_from_command_line (HeaderType& header, const List& default_strides = List())
>       |                                                                    ^~~~
> ./core/stride.h:416:92: error: there are no arguments to ‘List’ that depend on a template parameter, so a declaration of ‘List’ must be available [-fpermissive]
>   416 |       inline void set_from_command_line (HeaderType& header, const List& default_strides = List())
>       |                                                                                            ^~~~
> ./core/stride.h: In function ‘void Eigen::set_from_command_line(HeaderType&, const int&)’:
> ./core/stride.h:421:34: error: request for member ‘size’ in ‘default_strides’, which is of non-class type ‘const int’
>   421 |         else if (default_strides.size())
>       |                                  ^~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/header.h:29,
>                  from core/file/config.cpp:19:
> ./core/file/entry.h: At global scope:
> ./core/file/entry.h:47:66: error: ‘Entry’ does not name a type
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                                                                  ^~~~~
> ./core/file/entry.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’:
> ./core/file/entry.h:49:41: error: request for member ‘name’ in ‘e’, which is of non-class type ‘const int’
>    49 |       stream << "File::Entry { \"" << e.name << "\", offset " << e.start << " }";
>       |                                         ^~~~
> ./core/file/entry.h:49:68: error: request for member ‘start’ in ‘e’, which is of non-class type ‘const int’
>    49 |       stream << "File::Entry { \"" << e.name << "\", offset " << e.start << " }";
>       |                                                                    ^~~~~
> In file included from ./core/header.h:29,
>                  from core/file/config.cpp:19:
> ./core/file/mmap.h: At global scope:
> ./core/file/mmap.h:32:34: error: expected class-name before ‘{’ token
>    32 |     class MMap : protected Entry { NOMEMALIGN
>       |                                  ^
> ./core/file/mmap.h:55:21: error: ‘Entry’ does not name a type
>    55 |         MMap (const Entry& entry, bool readwrite = false, bool preload = true, int64_t mapped_size = -1);
>       |                     ^~~~~
> ./core/file/mmap.h: In member function ‘std::string MR::File::MMap::name() const’:
> ./core/file/mmap.h:59:18: error: ‘Entry’ has not been declared
>    59 |           return Entry::name;
>       |                  ^~~~~
> ./core/file/mmap.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const MR::File::MMap&)’:
> ./core/file/mmap.h:77:57: error: ambiguous overload for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const int’)
>    77 |           stream << "File::MMap { " << m.name() << " [" << m.fd << "], size: "
>       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~
>       |                                                 |            |
>       |                                                 |            const int
>       |                                                 std::basic_ostream<char>
> In file included from /usr/include/c++/11/istream:39,
>                  from /usr/include/c++/11/sstream:38,
>                  from ./core/mrtrix.h:25,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/ostream:166:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   166 |       operator<<(long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:170:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   170 |       operator<<(unsigned long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:174:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   174 |       operator<<(bool __n)
>       |       ^~~~~~~~
> In file included from /usr/include/c++/11/ostream:829,
>                  from /usr/include/c++/11/istream:39,
>                  from /usr/include/c++/11/sstream:38,
>                  from ./core/mrtrix.h:25,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/ostream.tcc:91:5: note: candidate: ‘std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char; _Traits = std::char_traits<char>]’
>    91 |     basic_ostream<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/istream:39,
>                  from /usr/include/c++/11/sstream:38,
>                  from ./core/mrtrix.h:25,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/ostream:181:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   181 |       operator<<(unsigned short __n)
>       |       ^~~~~~~~
> In file included from /usr/include/c++/11/ostream:829,
>                  from /usr/include/c++/11/istream:39,
>                  from /usr/include/c++/11/sstream:38,
>                  from ./core/mrtrix.h:25,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/ostream.tcc:105:5: note: candidate: ‘std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char; _Traits = std::char_traits<char>]’
>   105 |     basic_ostream<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/istream:39,
>                  from /usr/include/c++/11/sstream:38,
>                  from ./core/mrtrix.h:25,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/ostream:192:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   192 |       operator<<(unsigned int __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:201:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   201 |       operator<<(long long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:205:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   205 |       operator<<(unsigned long long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:220:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   220 |       operator<<(double __f)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:224:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   224 |       operator<<(float __f)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:232:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   232 |       operator<<(long double __f)
>       |       ^~~~~~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/header.h:29,
>                  from core/file/config.cpp:19:
> ./core/file/entry.h:47:26: note: candidate: ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                          ^~~~~~~~
> In file included from ./core/header.h:29,
>                  from core/file/config.cpp:19:
> ./core/file/mmap.h:79:71: error: ‘const class MR::File::MMap’ has no member named ‘start’
>    79 |                  << " at " << (void*) m.address() << ", offset " << m.start << " }";
>       |                                                                       ^~~~~
> ./core/file/mmap.h: In copy constructor ‘MR::File::MMap::MMap(const MR::File::MMap&)’:
> ./core/file/mmap.h:94:35: error: class ‘MR::File::MMap’ does not have any field named ‘Entry’
>    94 |         MMap (const MMap& mmap) : Entry (mmap), fd (0), addr (NULL), first (NULL), msize (0), mtime (0), readwrite (false) {
>       |                                   ^~~~~
> In file included from ./core/image_helpers.h:21,
>                  from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/apply.h: At global scope:
> ./core/apply.h:39:14: error: ‘Apply’ is not a class template
>    39 |       struct Apply<0> { NOMEMALIGN
>       |              ^~~~~
> ./core/apply.h:39:21: error: template specifiers not specified in declaration of ‘template<long unsigned int N> struct MR::{anonymous}::Apply’
>    39 |       struct Apply<0> { NOMEMALIGN
>       |                     ^
> ./core/apply.h:66:14: error: ‘Unpack’ is not a class template
>    66 |       struct Unpack<0> { NOMEMALIGN
>       |              ^~~~~~
> ./core/apply.h:66:22: error: template specifiers not specified in declaration of ‘template<long unsigned int N> struct MR::{anonymous}::Unpack’
>    66 |       struct Unpack<0> { NOMEMALIGN
>       |                      ^
> ./core/apply.h: In function ‘void Eigen::apply(F&&, T&&)’:
> ./core/apply.h:84:7: error: ‘Apply’ was not declared in this scope; did you mean ‘MR::{anonymous}::Apply’?
>    84 |       Apply< ::std::tuple_size<
>       |       ^~~~~
>       |       MR::{anonymous}::Apply
> ./core/apply.h:29:14: note: ‘MR::{anonymous}::Apply’ declared here
>    29 |       struct Apply { NOMEMALIGN
>       |              ^~~~~
> ./core/apply.h:86:22: error: ‘::apply’ has not been declared; did you mean ‘Eigen::apply’?
>    86 |         >::value-1>::apply (::std::forward<F>(f), ::std::forward<T>(t));
>       |                      ^~~~~
>       |                      Eigen::apply
> ./core/apply.h:82:23: note: ‘Eigen::apply’ declared here
>    82 |     FORCE_INLINE void apply (F && f, T && t)
>       |                       ^~~~~
> ./core/apply.h: At global scope:
> ./core/apply.h:92:17: error: ‘Unpack’ was not declared in this scope; did you mean ‘MR::{anonymous}::Unpack’?
>    92 |     -> decltype(Unpack< ::std::tuple_size<
>       |                 ^~~~~~
>       |                 MR::{anonymous}::Unpack
> ./core/apply.h:51:14: note: ‘MR::{anonymous}::Unpack’ declared here
>    51 |       struct Unpack { NOMEMALIGN
>       |              ^~~~~~
> ./core/apply.h:92:17: error: ‘Unpack’ was not declared in this scope; did you mean ‘MR::{anonymous}::Unpack’?
>    92 |     -> decltype(Unpack< ::std::tuple_size<
>       |                 ^~~~~~
>       |                 MR::{anonymous}::Unpack
> ./core/apply.h:51:14: note: ‘MR::{anonymous}::Unpack’ declared here
>    51 |       struct Unpack { NOMEMALIGN
>       |              ^~~~~~
> ./core/apply.h:94:20: error: ‘::unpack’ has not been declared
>    94 |         >::value>::unpack (::std::forward<F>(f), ::std::forward<T>(t)))
>       |                    ^~~~~~
> ./core/apply.h: In function ‘decltype (((<expression error> < std::tuple_size<typename std::decay<_Tp2>::type>::value) > <expression error>)) Eigen::unpack(F&&, T&&)’:
> ./core/apply.h:96:14: error: ‘Unpack’ was not declared in this scope; did you mean ‘MR::{anonymous}::Unpack’?
>    96 |       return Unpack< ::std::tuple_size<
>       |              ^~~~~~
>       |              MR::{anonymous}::Unpack
> ./core/apply.h:51:14: note: ‘MR::{anonymous}::Unpack’ declared here
>    51 |       struct Unpack { NOMEMALIGN
>       |              ^~~~~~
> ./core/apply.h:98:20: error: ‘::unpack’ has not been declared; did you mean ‘Eigen::unpack’?
>    98 |         >::value>::unpack (::std::forward<F>(f), ::std::forward<T>(t));
>       |                    ^~~~~~
>       |                    Eigen::unpack
> ./core/apply.h:91:23: note: ‘Eigen::unpack’ declared here
>    91 |     FORCE_INLINE auto unpack (F && f, T && t)
>       |                       ^~~~~~
> In file included from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:64:14: error: ‘__assign’ is not a class template
>    64 |       struct __assign<std::tuple<DestImageType...>> { NOMEMALIGN
>       |              ^~~~~~~~
> ./core/image_helpers.h:64:14: error: redefinition of ‘struct MR::{anonymous}::__assign<DestImageType>’
> ./core/image_helpers.h:55:14: note: previous definition of ‘struct MR::{anonymous}::__assign<DestImageType>’
>    55 |       struct __assign { NOMEMALIGN
>       |              ^~~~~~~~
> ./core/image_helpers.h:81:14: error: ‘__max_axis’ is not a class template
>    81 |       struct __max_axis<std::tuple<DestImageType...>> { NOMEMALIGN
>       |              ^~~~~~~~~~
> ./core/image_helpers.h:81:14: error: redefinition of ‘struct MR::{anonymous}::__max_axis<DestImageType>’
> ./core/image_helpers.h:73:14: note: previous definition of ‘struct MR::{anonymous}::__max_axis<DestImageType>’
>    73 |       struct __max_axis { NOMEMALIGN
>       |              ^~~~~~~~~~
> ./core/image_helpers.h: In member function ‘void MR::{anonymous}::__assign_pos_axis_range<ImageType>::to(DestImageType& ...) const’:
> ./core/image_helpers.h:93:20: error: ‘__max_axis’ was not declared in this scope; did you mean ‘MR::{anonymous}::__max_axis’?
>    93 |             apply (__max_axis<DestImageType...> (last_axis), std::tie (ref, dest...));
>       |                    ^~~~~~~~~~
>       |                    MR::{anonymous}::__max_axis
> ./core/image_helpers.h:73:14: note: ‘MR::{anonymous}::__max_axis’ declared here
>    73 |       struct __max_axis { NOMEMALIGN
>       |              ^~~~~~~~~~
> ./core/image_helpers.h:93:44: error: expected primary-expression before ‘...’ token
>    93 |             apply (__max_axis<DestImageType...> (last_axis), std::tie (ref, dest...));
>       |                                            ^~~
> ./core/image_helpers.h:95:22: error: ‘__assign’ was not declared in this scope; did you mean ‘MR::{anonymous}::__assign’?
>    95 |               apply (__assign<DestImageType...> (n, __get_index (ref, n)), std::tie (dest...));
>       |                      ^~~~~~~~
>       |                      MR::{anonymous}::__assign
> ./core/image_helpers.h:55:14: note: ‘MR::{anonymous}::__assign’ declared here
>    55 |       struct __assign { NOMEMALIGN
>       |              ^~~~~~~~
> ./core/image_helpers.h:95:44: error: expected primary-expression before ‘...’ token
>    95 |               apply (__assign<DestImageType...> (n, __get_index (ref, n)), std::tie (dest...));
>       |                                            ^~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:110:15: error: ‘vector’ does not name a type
>   110 |         const vector<IntType> axes;
>       |               ^~~~~~
> ./core/image_helpers.h: In member function ‘void MR::{anonymous}::__assign_pos_axes<ImageType, IntType>::to(DestImageType& ...) const’:
> ./core/image_helpers.h:106:27: error: ‘axes’ was not declared in this scope
>   106 |             for (auto a : axes)
>       |                           ^~~~
> ./core/image_helpers.h:107:22: error: ‘__assign’ was not declared in this scope; did you mean ‘MR::{anonymous}::__assign’?
>   107 |               apply (__assign<DestImageType...> (a, __get_index (ref, a)), std::tie (dest...));
>       |                      ^~~~~~~~
>       |                      MR::{anonymous}::__assign
> ./core/image_helpers.h:55:14: note: ‘MR::{anonymous}::__assign’ declared here
>    55 |       struct __assign { NOMEMALIGN
>       |              ^~~~~~~~
> ./core/image_helpers.h:107:44: error: expected primary-expression before ‘...’ token
>   107 |               apply (__assign<DestImageType...> (a, __get_index (ref, a)), std::tie (dest...));
>       |                                            ^~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:132:54: error: expected nested-name-specifier before ‘enable_if_header_type’
>   132 |       template<typename C> static yes& test(typename enable_if_header_type<HeaderType,int>::type);
>       |                                                      ^~~~~~~~~~~~~~~~~~~~~
> ./core/image_helpers.h:132:75: error: expected ‘,’ or ‘...’ before ‘<’ token
>   132 |       template<typename C> static yes& test(typename enable_if_header_type<HeaderType,int>::type);
>       |                                                                           ^
> ./core/image_helpers.h:158:54: error: expected nested-name-specifier before ‘enable_if_image_type’
>   158 |       template<typename C> static yes& test(typename enable_if_image_type<ImageType,int>::type);
>       |                                                      ^~~~~~~~~~~~~~~~~~~~
> ./core/image_helpers.h:158:74: error: expected ‘,’ or ‘...’ before ‘<’ token
>   158 |       template<typename C> static yes& test(typename enable_if_image_type<ImageType,int>::type);
>       |                                                                          ^
> ./core/image_helpers.h:178:33: error: ‘is_image_type’ was not declared in this scope; did you mean ‘MR::is_image_type’?
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                 ^~~~~~~~~~~~~
>       |                                 MR::is_image_type
> ./core/image_helpers.h:156:11: note: ‘MR::is_image_type’ declared here
>   156 |     class is_image_type { NOMEMALIGN
>       |           ^~~~~~~~~~~~~
> ./core/image_helpers.h:178:56: error: expected primary-expression before ‘>’ token
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                        ^
> ./core/image_helpers.h:178:59: error: ‘::value’ has not been declared
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                           ^~~~~
> ./core/image_helpers.h:178:69: error: ‘is_pure_image’ was not declared in this scope; did you mean ‘MR::is_pure_image’?
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                                     ^~~~~~~~~~~~~
>       |                                                                     MR::is_pure_image
> ./core/image_helpers.h:171:12: note: ‘MR::is_pure_image’ declared here
>   171 |     struct is_pure_image { NOMEMALIGN
>       |            ^~~~~~~~~~~~~
> ./core/image_helpers.h:178:92: error: expected primary-expression before ‘>’ token
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                                                            ^
> ./core/image_helpers.h:178:82: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                                                  ^
> ./core/image_helpers.h:178:95: error: ‘::value’ has not been declared
>   178 |       static bool const value = is_image_type<ImageType>::value && !is_pure_image<ImageType>::value;
>       |                                                                                               ^~~~~
> ./core/image_helpers.h:194:18: error: ‘__assign_pos_axis_range’ does not name a type
>   194 |     FORCE_INLINE __assign_pos_axis_range<ImageType>
>       |                  ^~~~~~~~~~~~~~~~~~~~~~~
> ./core/image_helpers.h:211:18: error: ‘__assign_pos_axes’ does not name a type
>   211 |     FORCE_INLINE __assign_pos_axes<ImageType, IntType>
>       |                  ^~~~~~~~~~~~~~~~~
> ./core/image_helpers.h:218:18: error: ‘__assign_pos_axes’ does not name a type
>   218 |     FORCE_INLINE __assign_pos_axes<ImageType, IntType>
>       |                  ^~~~~~~~~~~~~~~~~
> In file included from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/image_helpers.h: In function ‘void Eigen::check_effective_dimensionality(const HeaderType&, std::size_t)’:
> ./core/image_helpers.h:264:78: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   264 |         throw Exception ("Image \"" + in.name() + "\" does not represent " + str(N) + "D data (too few dimensions)");
>       |                                                                              ^~~
> ./core/image_helpers.h:267:80: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   267 |           throw Exception ("Image \"" + in.name() + "\" does not represent " + str(N) + "D data (axis " + str(i) + " has size " + str(in.size(i)) + ")");
>       |                                                                                ^~~
> ./core/image_helpers.h:267:107: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   267 |           throw Exception ("Image \"" + in.name() + "\" does not represent " + str(N) + "D data (axis " + str(i) + " has size " + str(in.size(i)) + ")");
>       |                                                                                                           ^~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:304:61: error: ‘vector’ does not name a type
>   304 |     inline int64_t voxel_count (const HeaderType& in, const vector<size_t>& axes)
>       |                                                             ^~~~~~
> ./core/image_helpers.h:304:67: error: expected ‘,’ or ‘...’ before ‘<’ token
>   304 |     inline int64_t voxel_count (const HeaderType& in, const vector<size_t>& axes)
>       |                                                                   ^
> ./core/image_helpers.h: In function ‘int64_t Eigen::voxel_count(const HeaderType&, int)’:
> ./core/image_helpers.h:307:30: error: ‘axes’ was not declared in this scope
>   307 |       for (size_t n = 0; n < axes.size(); ++n) {
>       |                              ^~~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:320:29: error: expected initializer before ‘<’ token
>   320 |     inline int64_t footprint<bool> (int64_t count) {
>       |                             ^
> ./core/image_helpers.h:324:44: error: ‘DataType’ has not been declared
>   324 |   inline int64_t footprint (int64_t count, DataType dtype) {
>       |                                            ^~~~~~~~
> ./core/image_helpers.h: In function ‘int64_t Eigen::footprint(int64_t, int)’:
> ./core/image_helpers.h:325:21: error: ‘DataType’ has not been declared
>   325 |     return dtype == DataType::Bit ? (count+7)/8 : count*dtype.bytes();
>       |                     ^~~~~~~~
> ./core/image_helpers.h:325:63: error: request for member ‘bytes’ in ‘dtype’, which is of non-class type ‘int’
>   325 |     return dtype == DataType::Bit ? (count+7)/8 : count*dtype.bytes();
>       |                                                               ^~~~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:362:87: error: ‘vector’ does not name a type
>   362 |     inline bool spacings_match (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes, const double tol=0.0)
>       |                                                                                       ^~~~~~
> ./core/image_helpers.h:362:93: error: expected ‘,’ or ‘...’ before ‘<’ token
>   362 |     inline bool spacings_match (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes, const double tol=0.0)
>       |                                                                                             ^
> ./core/image_helpers.h: In function ‘bool Eigen::spacings_match(const HeaderType1&, const HeaderType2&, int)’:
> ./core/image_helpers.h:364:30: error: ‘axes’ was not declared in this scope
>   364 |       for (size_t n = 0; n < axes.size(); ++n) {
>       |                              ^~~~
> ./core/image_helpers.h:366:65: error: ‘tol’ was not declared in this scope; did you mean ‘to’?
>   366 |         if (abs(in1.spacing (axes[n]) - in2.spacing(axes[n])) > tol * 0.5 * (in1.spacing (axes[n]) + in2.spacing(axes[n]))) return false;
>       |                                                                 ^~~
>       |                                                                 to
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:393:89: error: ‘vector’ does not name a type
>   393 |     inline bool dimensions_match (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes)
>       |                                                                                         ^~~~~~
> ./core/image_helpers.h:393:95: error: expected ‘,’ or ‘...’ before ‘<’ token
>   393 |     inline bool dimensions_match (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes)
>       |                                                                                               ^
> ./core/image_helpers.h: In function ‘bool Eigen::dimensions_match(const HeaderType1&, const HeaderType2&, int)’:
> ./core/image_helpers.h:395:30: error: ‘axes’ was not declared in this scope
>   395 |       for (size_t n = 0; n < axes.size(); ++n) {
>       |                              ^~~~
> ./core/image_helpers.h: In function ‘void Eigen::check_dimensions(const HeaderType1&, const HeaderType2&, std::size_t, std::size_t)’:
> ./core/image_helpers.h:426:121: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   426 |         throw Exception ("dimension mismatch between \"" + in1.name() + "\" and \"" + in2.name() + "\" between axes " + str(from_axis) + " and " + str(to_axis-1) +
>       |                                                                                                                         ^~~
> ./core/image_helpers.h:426:148: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   426 |         throw Exception ("dimension mismatch between \"" + in1.name() + "\" and \"" + in2.name() + "\" between axes " + str(from_axis) + " and " + str(to_axis-1) +
>       |                                                                                                                                                    ^~~
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:431:89: error: ‘vector’ does not name a type
>   431 |     inline void check_dimensions (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes)
>       |                                                                                         ^~~~~~
> ./core/image_helpers.h:431:95: error: expected ‘,’ or ‘...’ before ‘<’ token
>   431 |     inline void check_dimensions (const HeaderType1& in1, const HeaderType2& in2, const vector<size_t>& axes)
>       |                                                                                               ^
> ./core/image_helpers.h: In function ‘void Eigen::check_dimensions(const HeaderType1&, const HeaderType2&, int)’:
> ./core/image_helpers.h:433:40: error: ‘axes’ was not declared in this scope
>   433 |       if (!dimensions_match (in1, in2, axes))
>       |                                        ^~~~
> ./core/image_helpers.h:434:118: error: there are no arguments to ‘join’ that depend on a template parameter, so a declaration of ‘join’ must be available [-fpermissive]
>   434 |         throw Exception ("dimension mismatch between \"" + in1.name() + "\" and \"" + in2.name() + "\" for axes [" + join(axes, ",") + "]" +
>       |                                                                                                                      ^~~~
> ./core/image_helpers.h: In function ‘bool Eigen::voxel_grids_match_in_scanner_space(HeaderType1, HeaderType2, double)’:
> ./core/image_helpers.h:455:13: error: invalid use of template-name ‘Eigen::Vector3’ without an argument list
>   455 |       const Eigen::Vector3 vs1 (in1.spacing(0), in1.spacing(1), in1.spacing(2));
>       |             ^~~~~
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’ declared here
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/image_helpers.h:456:13: error: invalid use of template-name ‘Eigen::Vector3’ without an argument list
>   456 |       const Eigen::Vector3 vs2 (in2.spacing(0), in2.spacing(1), in2.spacing(2));
>       |             ^~~~~
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’ declared here
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/image_helpers.h:464:48: error: ‘vs1’ was not declared in this scope
>   464 |       double diff_in_scannercoord = std::sqrt((vs1.asDiagonal() * in1.transform().matrix() * voxel_coord -
>       |                                                ^~~
> ./core/image_helpers.h:465:9: error: ‘vs2’ was not declared in this scope
>   465 |         vs2.asDiagonal() * in2.transform().matrix() * voxel_coord).colwise().squaredNorm().maxCoeff());
>       |         ^~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/image_helpers.h:466:74: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   466 |       DEBUG ("transforms_match: FOV difference in scanner coordinates: "+str(diff_in_scannercoord));
>       |                                                                          ^~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> In file included from ./core/header.h:30,
>                  from core/file/config.cpp:19:
> ./core/image_helpers.h: At global scope:
> ./core/image_helpers.h:551:24: error: expected template-name before ‘<’ token
>   551 |         public ConstRow<ImageType>
>       |                        ^
> ./core/image_helpers.h:551:24: error: expected ‘{’ before ‘<’ token
> ./core/image_helpers.h:631:22: error: ‘Helper’ does not name a type
>   631 |         FORCE_INLINE Helper::Index<Derived> index (size_t axis) { return { static_cast<Derived&> (*this), axis }; }
>       |                      ^~~~~~
> ./core/image_helpers.h:634:22: error: ‘Helper’ does not name a type
>   634 |         FORCE_INLINE Helper::Value<Derived> value () { return { static_cast<Derived&> (*this) }; }
>       |                      ^~~~~~
> ./core/image_helpers.h:651:22: error: ‘Helper’ does not name a type
>   651 |         FORCE_INLINE Helper::ConstRow<Derived> row (size_t axis) const { return { static_cast<Derived&> (*this), axis }; }
>       |                      ^~~~~~
> ./core/image_helpers.h:652:22: error: ‘Helper’ does not name a type
>   652 |         FORCE_INLINE Helper::Row<Derived> row (size_t axis) { return { static_cast<Derived&> (*this), axis }; }
>       |                      ^~~~~~
> In file included from ./core/header.h:31,
>                  from core/file/config.cpp:19:
> ./core/image_io/base.h:47:21: error: ‘Header’ does not name a type
>    47 |         Base (const Header& header);
>       |                     ^~~~~~
> ./core/image_io/base.h:59:26: error: ‘Header’ does not name a type
>    59 |         void open (const Header& header, size_t buffer_size = 0);
>       |                          ^~~~~~
> ./core/image_io/base.h:60:27: error: ‘Header’ does not name a type
>    60 |         void close (const Header& header);
>       |                           ^~~~~~
> ./core/image_io/base.h:88:9: error: ‘vector’ does not name a type
>    88 |         vector<File::Entry> files;
>       |         ^~~~~~
> ./core/image_io/base.h:105:9: error: ‘vector’ does not name a type
>   105 |         vector<std::unique_ptr<uint8_t[]>> addresses;
>       |         ^~~~~~
> ./core/image_io/base.h:111:34: error: ‘Header’ does not name a type
>   111 |         virtual void load (const Header& header, size_t buffer_size) = 0;
>       |                                  ^~~~~~
> ./core/image_io/base.h:112:36: error: ‘Header’ does not name a type
>   112 |         virtual void unload (const Header& header) = 0;
>       |                                    ^~~~~~
> ./core/image_io/base.h: In member function ‘uint8_t* MR::ImageIO::Base::segment(std::size_t) const’:
> ./core/image_io/base.h:78:18: error: ‘addresses’ was not declared in this scope
>    78 |           return addresses[n].get();
>       |                  ^~~~~~~~~
> ./core/image_io/base.h: In member function ‘std::size_t MR::ImageIO::Base::nsegments() const’:
> ./core/image_io/base.h:81:18: error: ‘addresses’ was not declared in this scope
>    81 |           return addresses.size();
>       |                  ^~~~~~~~~
> ./core/image_io/base.h: In member function ‘void MR::ImageIO::Base::merge(const MR::ImageIO::Base&)’:
> ./core/image_io/base.h:92:36: error: ‘const class MR::ImageIO::Base’ has no member named ‘files’
>    92 |           for (size_t n = 0; n < B.files.size(); ++n)
>       |                                    ^~~~~
> ./core/image_io/base.h:93:13: error: ‘files’ was not declared in this scope
>    93 |             files.push_back (B.files[n]);
>       |             ^~~~~
> ./core/image_io/base.h:93:32: error: ‘const class MR::ImageIO::Base’ has no member named ‘files’
>    93 |             files.push_back (B.files[n]);
>       |                                ^~~~~
> ./core/image_io/base.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const MR::ImageIO::Base&)’:
> ./core/image_io/base.h:98:28: error: ‘const class MR::ImageIO::Base’ has no member named ‘files’
>    98 |           stream << str (B.files.size()) << " files, segsize " << str(B.segsize)
>       |                            ^~~~~
> ./core/image_io/base.h:98:21: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>    98 |           stream << str (B.files.size()) << " files, segsize " << str(B.segsize)
>       |                     ^~~
>       |                     Eigen::str
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from core/file/config.cpp:19:
> ./core/header.h: At global scope:
> ./core/header.h:56:11: error: ‘default_type’ does not name a type
>    56 |           default_type spacing;
>       |           ^~~~~~~~~~~~
> ./core/header.h:208:13: error: ‘transform_type’ does not name a type
>   208 |       const transform_type& transform () const { return transform_; }
>       |             ^~~~~~~~~~~~~~
> ./core/header.h:210:7: error: ‘transform_type’ does not name a type
>   210 |       transform_type& transform () { return transform_; }
>       |       ^~~~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:217:28: error: expected ‘)’ before ‘<’ token
>   217 |           NDimProxy (vector<Axis>& axes) : axes (axes) { }
>       |                     ~      ^
>       |                            )
> ./core/header.h:230:11: error: ‘vector’ does not name a type
>   230 |           vector<Axis>& axes;
>       |           ^~~~~~
> ./core/header.h:244:13: error: ‘default_type’ does not name a type
>   244 |       const default_type& spacing (size_t axis) const;
>       |             ^~~~~~~~~~~~
> ./core/header.h:246:7: error: ‘default_type’ does not name a type
>   246 |       default_type& spacing (size_t axis);
>       |       ^~~~~~~~~~~~
> ./core/header.h:253:45: error: expected class-name before ‘{’ token
>   253 |       class DataTypeProxy : public DataType { NOMEMALIGN
>       |                                             ^
> ./core/header.h:262:17: error: ‘DataType’ does not name a type
>   262 |           const DataType& operator= (const DataType& DT) { DataType::operator= (DT); set(); return *this; }
>       |                 ^~~~~~~~
> ./core/header.h:278:7: error: ‘DataType’ does not name a type
>   278 |       DataType datatype () const { return datatype_; }
>       |       ^~~~~~~~
> ./core/header.h:281:7: error: ‘default_type’ does not name a type
>   281 |       default_type intensity_offset () const { return offset_; }
>       |       ^~~~~~~~~~~~
> ./core/header.h:283:7: error: ‘default_type’ does not name a type
>   283 |       default_type& intensity_offset () { return offset_; }
>       |       ^~~~~~~~~~~~
> ./core/header.h:285:7: error: ‘default_type’ does not name a type
>   285 |       default_type intensity_scale () const { return scale_; }
>       |       ^~~~~~~~~~~~
> ./core/header.h:287:7: error: ‘default_type’ does not name a type
>   287 |       default_type& intensity_scale () { return scale_; }
>       |       ^~~~~~~~~~~~
> ./core/header.h:290:37: error: ‘default_type’ has not been declared
>   290 |       void apply_intensity_scaling (default_type scaling, default_type bias = 0.0) {
>       |                                     ^~~~~~~~~~~~
> ./core/header.h:290:59: error: ‘default_type’ has not been declared
>   290 |       void apply_intensity_scaling (default_type scaling, default_type bias = 0.0) {
>       |                                                           ^~~~~~~~~~~~
> ./core/header.h:296:35: error: ‘default_type’ has not been declared
>   296 |       void set_intensity_scaling (default_type scaling = 1.0, default_type bias = 0.0) {
>       |                                   ^~~~~~~~~~~~
> ./core/header.h:296:63: error: ‘default_type’ has not been declared
>   296 |       void set_intensity_scaling (default_type scaling = 1.0, default_type bias = 0.0) {
>       |                                                               ^~~~~~~~~~~~
> ./core/header.h:338:9: error: ‘Image’ does not name a type
>   338 |         Image<ValueType> get_image (bool read_write_if_existing = false);
>       |         ^~~~~
> ./core/header.h:341:13: error: ‘KeyValues’ does not name a type
>   341 |       const KeyValues& keyval () const { return keyval_; }
>       |             ^~~~~~~~~
> ./core/header.h:343:7: error: ‘KeyValues’ does not name a type
>   343 |       KeyValues& keyval () { return keyval_; }
>       |       ^~~~~~~~~
> ./core/header.h:361:7: error: ‘vector’ does not name a type
>   361 |       vector<Axis> axes_;
>       |       ^~~~~~
> ./core/header.h:362:7: error: ‘transform_type’ does not name a type
>   362 |       transform_type transform_;
>       |       ^~~~~~~~~~~~~~
> ./core/header.h:364:7: error: ‘KeyValues’ does not name a type
>   364 |       KeyValues keyval_;
>       |       ^~~~~~~~~
> ./core/header.h:368:23: error: ‘ImageIO’ was not declared in this scope; did you mean ‘MR::ImageIO’?
>   368 |       std::unique_ptr<ImageIO::Base> io;
>       |                       ^~~~~~~
>       |                       MR::ImageIO
> In file included from ./core/header.h:31,
>                  from core/file/config.cpp:19:
> ./core/image_io/base.h:41:13: note: ‘MR::ImageIO’ declared here
>    41 |   namespace ImageIO
>       |             ^~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:368:36: error: template argument 1 is invalid
>   368 |       std::unique_ptr<ImageIO::Base> io;
>       |                                    ^
> ./core/header.h:368:36: error: template argument 2 is invalid
> ./core/header.h:370:7: error: ‘DataType’ does not name a type
>   370 |       DataType datatype_;
>       |       ^~~~~~~~
> ./core/header.h:372:7: error: ‘default_type’ does not name a type
>   372 |       default_type offset_, scale_;
>       |       ^~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h: In constructor ‘MR::Header::Axis::Axis()’:
> ./core/header.h:54:40: error: class ‘MR::Header::Axis’ does not have any field named ‘spacing’
>    54 |           Axis () noexcept : size (1), spacing (std::numeric_limits<default_type>::quiet_NaN()), stride (0) { }
>       |                                        ^~~~~~~
> ./core/header.h:54:69: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    54 |           Axis () noexcept : size (1), spacing (std::numeric_limits<default_type>::quiet_NaN()), stride (0) { }
>       |                                                                     ^~~~~~~~~~~~
>       |                                                                     MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:54:81: error: template argument 1 is invalid
>    54 |           Axis () noexcept : size (1), spacing (std::numeric_limits<default_type>::quiet_NaN()), stride (0) { }
>       |                                                                                 ^
> ./core/header.h: In constructor ‘MR::Header::Header()’:
> ./core/header.h:61:9: error: class ‘MR::Header’ does not have any field named ‘transform_’
>    61 |         transform_ (Eigen::Matrix<default_type,3,4>::Constant (NaN)),
>       |         ^~~~~~~~~~
> ./core/header.h:61:35: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    61 |         transform_ (Eigen::Matrix<default_type,3,4>::Constant (NaN)),
>       |                                   ^~~~~~~~~~~~
>       |                                   MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:61:51: error: template argument 1 is invalid
>    61 |         transform_ (Eigen::Matrix<default_type,3,4>::Constant (NaN)),
>       |                                                   ^
> ./core/header.h:61:64: error: ‘NaN’ was not declared in this scope; did you mean ‘MR::NaN’?
>    61 |         transform_ (Eigen::Matrix<default_type,3,4>::Constant (NaN)),
>       |                                                                ^~~
>       |                                                                MR::NaN
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:230:26: note: ‘MR::NaN’ declared here
>   230 |   constexpr default_type NaN = std::numeric_limits<default_type>::quiet_NaN();
>       |                          ^~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:63:9: error: class ‘MR::Header’ does not have any field named ‘offset_’
>    63 |         offset_ (0.0),
>       |         ^~~~~~~
> ./core/header.h:64:9: error: class ‘MR::Header’ does not have any field named ‘scale_’
>    64 |         scale_ (1.0),
>       |         ^~~~~~
> ./core/header.h: In constructor ‘MR::Header::Header(MR::Header&&)’:
> ./core/header.h:69:9: error: class ‘MR::Header’ does not have any field named ‘axes_’
>    69 |         axes_ (std::move (H.axes_)),
>       |         ^~~~~
> ./core/header.h:69:29: error: ‘class MR::Header’ has no member named ‘axes_’
>    69 |         axes_ (std::move (H.axes_)),
>       |                             ^~~~~
> ./core/header.h:70:9: error: class ‘MR::Header’ does not have any field named ‘transform_’
>    70 |         transform_ (std::move (H.transform_)),
>       |         ^~~~~~~~~~
> ./core/header.h:70:34: error: ‘class MR::Header’ has no member named ‘transform_’
>    70 |         transform_ (std::move (H.transform_)),
>       |                                  ^~~~~~~~~~
> ./core/header.h:72:9: error: class ‘MR::Header’ does not have any field named ‘keyval_’
>    72 |         keyval_ (std::move (H.keyval_)),
>       |         ^~~~~~~
> ./core/header.h:72:31: error: ‘class MR::Header’ has no member named ‘keyval_’
>    72 |         keyval_ (std::move (H.keyval_)),
>       |                               ^~~~~~~
> ./core/header.h:75:9: error: class ‘MR::Header’ does not have any field named ‘datatype_’
>    75 |         datatype_ (std::move (H.datatype_)),
>       |         ^~~~~~~~~
> ./core/header.h:75:33: error: ‘class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>    75 |         datatype_ (std::move (H.datatype_)),
>       |                                 ^~~~~~~~~
>       |                                 datatype
> ./core/header.h:76:9: error: class ‘MR::Header’ does not have any field named ‘offset_’
>    76 |         offset_ (H.offset_),
>       |         ^~~~~~~
> ./core/header.h:76:20: error: ‘class MR::Header’ has no member named ‘offset_’
>    76 |         offset_ (H.offset_),
>       |                    ^~~~~~~
> ./core/header.h:77:9: error: class ‘MR::Header’ does not have any field named ‘scale_’
>    77 |         scale_ (H.scale_),
>       |         ^~~~~~
> ./core/header.h:77:19: error: ‘class MR::Header’ has no member named ‘scale_’
>    77 |         scale_ (H.scale_),
>       |                   ^~~~~~
> ./core/header.h: In member function ‘MR::Header& MR::Header::operator=(MR::Header&&)’:
> ./core/header.h:82:9: error: ‘axes_’ was not declared in this scope
>    82 |         axes_ = std::move (H.axes_);
>       |         ^~~~~
> ./core/header.h:82:30: error: ‘class MR::Header’ has no member named ‘axes_’
>    82 |         axes_ = std::move (H.axes_);
>       |                              ^~~~~
> ./core/header.h:83:9: error: ‘transform_’ was not declared in this scope; did you mean ‘transform_type’?
>    83 |         transform_ = std::move (H.transform_);
>       |         ^~~~~~~~~~
>       |         transform_type
> ./core/header.h:83:35: error: ‘class MR::Header’ has no member named ‘transform_’
>    83 |         transform_ = std::move (H.transform_);
>       |                                   ^~~~~~~~~~
> ./core/header.h:85:9: error: ‘keyval_’ was not declared in this scope
>    85 |         keyval_ = std::move (H.keyval_);
>       |         ^~~~~~~
> ./core/header.h:85:32: error: ‘class MR::Header’ has no member named ‘keyval_’
>    85 |         keyval_ = std::move (H.keyval_);
>       |                                ^~~~~~~
> ./core/header.h:88:9: error: ‘datatype_’ was not declared in this scope; did you mean ‘datatype’?
>    88 |         datatype_ = std::move (H.datatype_);
>       |         ^~~~~~~~~
>       |         datatype
> ./core/header.h:88:34: error: ‘class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>    88 |         datatype_ = std::move (H.datatype_);
>       |                                  ^~~~~~~~~
>       |                                  datatype
> ./core/header.h:89:9: error: ‘offset_’ was not declared in this scope; did you mean ‘offsetof’?
>    89 |         offset_ = H.offset_;
>       |         ^~~~~~~
>       |         offsetof
> ./core/header.h:89:21: error: ‘class MR::Header’ has no member named ‘offset_’
>    89 |         offset_ = H.offset_;
>       |                     ^~~~~~~
> ./core/header.h:90:9: error: ‘scale_’ was not declared in this scope; did you mean ‘scalbn’?
>    90 |         scale_ = H.scale_;
>       |         ^~~~~~
>       |         scalbn
> ./core/header.h:90:20: error: ‘class MR::Header’ has no member named ‘scale_’
>    90 |         scale_ = H.scale_;
>       |                    ^~~~~~
> ./core/header.h: In copy constructor ‘MR::Header::Header(const MR::Header&)’:
> ./core/header.h:100:9: error: class ‘MR::Header’ does not have any field named ‘axes_’
>   100 |         axes_ (H.axes_),
>       |         ^~~~~
> ./core/header.h:100:18: error: ‘const class MR::Header’ has no member named ‘axes_’
>   100 |         axes_ (H.axes_),
>       |                  ^~~~~
> ./core/header.h:101:9: error: class ‘MR::Header’ does not have any field named ‘transform_’
>   101 |         transform_ (H.transform_),
>       |         ^~~~~~~~~~
> ./core/header.h:101:23: error: ‘const class MR::Header’ has no member named ‘transform_’
>   101 |         transform_ (H.transform_),
>       |                       ^~~~~~~~~~
> ./core/header.h:103:9: error: class ‘MR::Header’ does not have any field named ‘keyval_’
>   103 |         keyval_ (H.keyval_),
>       |         ^~~~~~~
> ./core/header.h:103:20: error: ‘const class MR::Header’ has no member named ‘keyval_’
>   103 |         keyval_ (H.keyval_),
>       |                    ^~~~~~~
> ./core/header.h:105:9: error: class ‘MR::Header’ does not have any field named ‘datatype_’
>   105 |         datatype_ (H.datatype_),
>       |         ^~~~~~~~~
> ./core/header.h:105:22: error: ‘const class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>   105 |         datatype_ (H.datatype_),
>       |                      ^~~~~~~~~
>       |                      datatype
> ./core/header.h:106:9: error: class ‘MR::Header’ does not have any field named ‘offset_’
>   106 |         offset_ (datatype().is_integer() ? H.offset_ : 0.0),
>       |         ^~~~~~~
> ./core/header.h:106:29: error: ‘class MR::Header::DataTypeProxy’ has no member named ‘is_integer’
>   106 |         offset_ (datatype().is_integer() ? H.offset_ : 0.0),
>       |                             ^~~~~~~~~~
> ./core/header.h:106:46: error: ‘const class MR::Header’ has no member named ‘offset_’
>   106 |         offset_ (datatype().is_integer() ? H.offset_ : 0.0),
>       |                                              ^~~~~~~
> ./core/header.h:107:9: error: class ‘MR::Header’ does not have any field named ‘scale_’
>   107 |         scale_ (datatype().is_integer() ? H.scale_ : 1.0),
>       |         ^~~~~~
> ./core/header.h:107:28: error: ‘class MR::Header::DataTypeProxy’ has no member named ‘is_integer’
>   107 |         scale_ (datatype().is_integer() ? H.scale_ : 1.0),
>       |                            ^~~~~~~~~~
> ./core/header.h:107:45: error: ‘const class MR::Header’ has no member named ‘scale_’
>   107 |         scale_ (datatype().is_integer() ? H.scale_ : 1.0),
>       |                                             ^~~~~~
> ./core/header.h: In constructor ‘MR::Header::Header(const HeaderType&)’:
> ./core/header.h:121:11: error: class ‘MR::Header’ does not have any field named ‘transform_’
>   121 |           transform_ (original.transform()),
>       |           ^~~~~~~~~~
> ./core/header.h:123:11: error: class ‘MR::Header’ does not have any field named ‘keyval_’
>   123 |           keyval_ (original.keyval()),
>       |           ^~~~~~~
> ./core/header.h:125:11: error: class ‘MR::Header’ does not have any field named ‘datatype_’
>   125 |           datatype_ (DataType::from<typename HeaderType::value_type>()),
>       |           ^~~~~~~~~
> ./core/header.h:125:22: error: ‘DataType’ has not been declared
>   125 |           datatype_ (DataType::from<typename HeaderType::value_type>()),
>       |                      ^~~~~~~~
> ./core/header.h:125:68: error: expected ‘(’ before ‘>’ token
>   125 |           datatype_ (DataType::from<typename HeaderType::value_type>()),
>       |                                                                    ^
> ./core/header.h:125:70: error: expected primary-expression before ‘)’ token
>   125 |           datatype_ (DataType::from<typename HeaderType::value_type>()),
>       |                                                                      ^
> ./core/header.h:126:11: error: class ‘MR::Header’ does not have any field named ‘offset_’
>   126 |           offset_ (0.0),
>       |           ^~~~~~~
> ./core/header.h:127:11: error: class ‘MR::Header’ does not have any field named ‘scale_’
>   127 |           scale_ (1.0),
>       |           ^~~~~~
> ./core/header.h:130:13: error: ‘axes_’ was not declared in this scope
>   130 |             axes_.resize (original.ndim());
>       |             ^~~~~
> ./core/header.h:134:15: error: there are no arguments to ‘spacing’ that depend on a template parameter, so a declaration of ‘spacing’ must be available [-fpermissive]
>   134 |               spacing(n) = original.spacing(n);
>       |               ^~~~~~~
> ./core/header.h: In member function ‘MR::Header& MR::Header::operator=(const MR::Header&)’:
> ./core/header.h:143:9: error: ‘axes_’ was not declared in this scope
>   143 |         axes_ = H.axes_;
>       |         ^~~~~
> ./core/header.h:143:19: error: ‘const class MR::Header’ has no member named ‘axes_’
>   143 |         axes_ = H.axes_;
>       |                   ^~~~~
> ./core/header.h:144:9: error: ‘transform_’ was not declared in this scope; did you mean ‘transform_type’?
>   144 |         transform_ = H.transform_;
>       |         ^~~~~~~~~~
>       |         transform_type
> ./core/header.h:144:24: error: ‘const class MR::Header’ has no member named ‘transform_’
>   144 |         transform_ = H.transform_;
>       |                        ^~~~~~~~~~
> ./core/header.h:146:9: error: ‘keyval_’ was not declared in this scope
>   146 |         keyval_ = H.keyval_;
>       |         ^~~~~~~
> ./core/header.h:146:21: error: ‘const class MR::Header’ has no member named ‘keyval_’
>   146 |         keyval_ = H.keyval_;
>       |                     ^~~~~~~
> ./core/header.h:148:9: error: ‘datatype_’ was not declared in this scope; did you mean ‘datatype’?
>   148 |         datatype_ = H.datatype_;
>       |         ^~~~~~~~~
>       |         datatype
> ./core/header.h:148:23: error: ‘const class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>   148 |         datatype_ = H.datatype_;
>       |                       ^~~~~~~~~
>       |                       datatype
> ./core/header.h:149:9: error: ‘offset_’ was not declared in this scope; did you mean ‘offsetof’?
>   149 |         offset_ = datatype().is_integer() ? H.offset_ : 0.0;
>       |         ^~~~~~~
>       |         offsetof
> ./core/header.h:149:30: error: ‘class MR::Header::DataTypeProxy’ has no member named ‘is_integer’
>   149 |         offset_ = datatype().is_integer() ? H.offset_ : 0.0;
>       |                              ^~~~~~~~~~
> ./core/header.h:149:47: error: ‘const class MR::Header’ has no member named ‘offset_’
>   149 |         offset_ = datatype().is_integer() ? H.offset_ : 0.0;
>       |                                               ^~~~~~~
> ./core/header.h:150:9: error: ‘scale_’ was not declared in this scope; did you mean ‘scalbn’?
>   150 |         scale_ = datatype().is_integer() ? H.scale_ : 1.0;
>       |         ^~~~~~
>       |         scalbn
> ./core/header.h:150:29: error: ‘class MR::Header::DataTypeProxy’ has no member named ‘is_integer’
>   150 |         scale_ = datatype().is_integer() ? H.scale_ : 1.0;
>       |                             ^~~~~~~~~~
> ./core/header.h:150:46: error: ‘const class MR::Header’ has no member named ‘scale_’
>   150 |         scale_ = datatype().is_integer() ? H.scale_ : 1.0;
>       |                                              ^~~~~~
> ./core/header.h:153:12: error: request for member ‘reset’ in ‘((MR::Header*)this)->MR::Header::io’, which is of non-class type ‘int’
>   153 |         io.reset();
>       |            ^~~~~
> ./core/header.h: In member function ‘MR::Header& MR::Header::operator=(const HeaderType&)’:
> ./core/header.h:168:11: error: ‘axes_’ was not declared in this scope
>   168 |           axes_.resize (original.ndim());
>       |           ^~~~~
> ./core/header.h:172:13: error: there are no arguments to ‘spacing’ that depend on a template parameter, so a declaration of ‘spacing’ must be available [-fpermissive]
>   172 |             spacing(n) = original.spacing(n);
>       |             ^~~~~~~
> ./core/header.h:174:11: error: ‘transform_’ was not declared in this scope; did you mean ‘transform_type’?
>   174 |           transform_ = original.transform();
>       |           ^~~~~~~~~~
>       |           transform_type
> ./core/header.h:176:11: error: ‘keyval_’ was not declared in this scope
>   176 |           keyval_ = original.keyval();
>       |           ^~~~~~~
> ./core/header.h:178:11: error: ‘datatype_’ was not declared in this scope; did you mean ‘datatype’?
>   178 |           datatype_ = DataType::from<typename HeaderType::value_type>();
>       |           ^~~~~~~~~
>       |           datatype
> ./core/header.h:178:23: error: ‘DataType’ has not been declared
>   178 |           datatype_ = DataType::from<typename HeaderType::value_type>();
>       |                       ^~~~~~~~
> ./core/header.h:178:69: error: expected ‘(’ before ‘>’ token
>   178 |           datatype_ = DataType::from<typename HeaderType::value_type>();
>       |                                                                     ^
> ./core/header.h:178:71: error: expected primary-expression before ‘)’ token
>   178 |           datatype_ = DataType::from<typename HeaderType::value_type>();
>       |                                                                       ^
> ./core/header.h:179:11: error: ‘offset_’ was not declared in this scope; did you mean ‘offsetof’?
>   179 |           offset_ = 0.0;
>       |           ^~~~~~~
>       |           offsetof
> ./core/header.h:180:11: error: ‘scale_’ was not declared in this scope; did you mean ‘scalbn’?
>   180 |           scale_ = 1.0;
>       |           ^~~~~~
>       |           scalbn
> ./core/header.h:183:14: error: request for member ‘reset’ in ‘((MR::Header*)this)->MR::Header::io’, which is of non-class type ‘int’
>   183 |           io.reset();
>       |              ^~~~~
> ./core/header.h: In destructor ‘MR::Header::~Header()’:
> ./core/header.h:189:19: error: base operand of ‘->’ is not a pointer
>   189 |           try { io->close (*this); }
>       |                   ^~
> ./core/header.h:190:18: error: ‘Exception’ does not name a type
>   190 |           catch (Exception& E) {
>       |                  ^~~~~~~~~
> ./core/header.h:191:13: error: ‘E’ was not declared in this scope
>   191 |             E.display();
>       |             ^
> In file included from core/file/config.cpp:19:
> ./core/header.h: In member function ‘MR::Header::NDimProxy::operator std::size_t() const’:
> ./core/header.h:223:45: error: ‘axes’ was not declared in this scope
>   223 |           operator size_t () const { return axes.size(); }
>       |                                             ^~~~
> ./core/header.h: In member function ‘std::size_t MR::Header::NDimProxy::operator=(std::size_t)’:
> ./core/header.h:224:50: error: ‘axes’ was not declared in this scope
>   224 |           size_t   operator= (size_t new_size) { axes.resize (new_size); return new_size; }
>       |                                                  ^~~~
> ./core/header.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const MR::Header::NDimProxy&)’:
> ./core/header.h:226:29: error: ‘const class MR::Header::NDimProxy’ has no member named ‘axes’
>   226 |             stream << proxy.axes.size();
>       |                             ^~~~
> ./core/header.h: In member function ‘std::size_t MR::Header::ndim() const’:
> ./core/header.h:234:37: error: ‘axes_’ was not declared in this scope
>   234 |       size_t ndim () const { return axes_.size(); }
>       |                                     ^~~~~
> ./core/header.h: In member function ‘MR::Header::NDimProxy MR::Header::ndim()’:
> ./core/header.h:236:36: error: ‘axes_’ was not declared in this scope
>   236 |       NDimProxy ndim () { return { axes_ }; }
>       |                                    ^~~~~
> ./core/header.h:236:42: error: could not convert ‘{<expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘MR::Header::NDimProxy’
>   236 |       NDimProxy ndim () { return { axes_ }; }
>       |                                          ^
>       |                                          |
>       |                                          <brace-enclosed initializer list>
> ./core/header.h: In constructor ‘MR::Header::DataTypeProxy::DataTypeProxy(MR::Header&)’:
> ./core/header.h:255:39: error: class ‘MR::Header::DataTypeProxy’ does not have any field named ‘DataType’
>   255 |           DataTypeProxy (Header& H) : DataType (H.datatype_), H (H) { }
>       |                                       ^~~~~~~~
> ./core/header.h:255:51: error: ‘class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>   255 |           DataTypeProxy (Header& H) : DataType (H.datatype_), H (H) { }
>       |                                                   ^~~~~~~~~
>       |                                                   datatype
> ./core/header.h: In member function ‘uint8_t MR::Header::DataTypeProxy::operator()() const’:
> ./core/header.h:261:47: error: ‘DataType’ has not been declared
>   261 |           uint8_t operator()() const { return DataType::operator()(); }
>       |                                               ^~~~~~~~
> ./core/header.h: In member function ‘void MR::Header::DataTypeProxy::set_flag(uint8_t)’:
> ./core/header.h:263:42: error: ‘DataType’ has not been declared
>   263 |           void set_flag (uint8_t flag) { DataType::set_flag (flag); set(); }
>       |                                          ^~~~~~~~
> ./core/header.h: In member function ‘void MR::Header::DataTypeProxy::unset_flag(uint8_t)’:
> ./core/header.h:264:44: error: ‘DataType’ has not been declared
>   264 |           void unset_flag (uint8_t flag) { DataType::unset_flag (flag); set(); }
>       |                                            ^~~~~~~~
> ./core/header.h: In member function ‘void MR::Header::DataTypeProxy::set_byte_order_native()’:
> ./core/header.h:265:43: error: ‘DataType’ has not been declared
>   265 |           void set_byte_order_native () { DataType::set_byte_order_native(); set(); }
>       |                                           ^~~~~~~~
> ./core/header.h: In member function ‘void MR::Header::DataTypeProxy::set()’:
> ./core/header.h:269:15: error: ‘class MR::Header’ has no member named ‘datatype_’; did you mean ‘datatype’?
>   269 |             H.datatype_ = dt;
>       |               ^~~~~~~~~
>       |               datatype
> ./core/header.h:269:27: error: ‘dt’ was not declared in this scope
>   269 |             H.datatype_ = dt;
>       |                           ^~
> ./core/header.h:270:18: error: ‘is_integer’ was not declared in this scope
>   270 |             if (!is_integer())
>       |                  ^~~~~~~~~~
> ./core/header.h: In member function ‘void MR::Header::apply_intensity_scaling(int, int)’:
> ./core/header.h:291:9: error: ‘scale_’ was not declared in this scope; did you mean ‘scalbn’?
>   291 |         scale_ *= scaling;
>       |         ^~~~~~
>       |         scalbn
> ./core/header.h:292:9: error: ‘offset_’ was not declared in this scope; did you mean ‘offsetof’?
>   292 |         offset_ = scaling * offset_ + bias;
>       |         ^~~~~~~
>       |         offsetof
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/header.h: In member function ‘void MR::Header::set_intensity_scaling(int, int)’:
> ./core/header.h:298:58: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   298 |           WARN ("invalid scaling parameters (offset: " + str(bias) + ", scale: " + str(scaling) + ")");
>       |                                                          ^~~
> ./core/exception.h:73:69: note: in definition of macro ‘WARN’
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                                     ^~~
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> ./core/header.h:298:11: note: in expansion of macro ‘WARN’
>   298 |           WARN ("invalid scaling parameters (offset: " + str(bias) + ", scale: " + str(scaling) + ")");
>       |           ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:299:9: error: ‘scale_’ was not declared in this scope; did you mean ‘scalbn’?
>   299 |         scale_ = scaling;
>       |         ^~~~~~
>       |         scalbn
> ./core/header.h:300:9: error: ‘offset_’ was not declared in this scope; did you mean ‘offsetof’?
>   300 |         offset_ = bias;
>       |         ^~~~~~~
>       |         offsetof
> ./core/header.h: In member function ‘void MR::Header::set_intensity_scaling(const MR::Header&)’:
> ./core/header.h:303:79: error: ‘const class MR::Header’ has no member named ‘intensity_scale’; did you mean ‘set_intensity_scaling’?
>   303 |       void set_intensity_scaling (const Header& H) { set_intensity_scaling (H.intensity_scale(), H.intensity_offset()); }
>       |                                                                               ^~~~~~~~~~~~~~~
>       |                                                                               set_intensity_scaling
> ./core/header.h:303:100: error: ‘const class MR::Header’ has no member named ‘intensity_offset’
>   303 |       void set_intensity_scaling (const Header& H) { set_intensity_scaling (H.intensity_scale(), H.intensity_offset()); }
>       |                                                                                                    ^~~~~~~~~~~~~~~~
> ./core/header.h: In member function ‘bool MR::Header::is_file_backed() const’:
> ./core/header.h:307:57: error: base operand of ‘->’ is not a pointer
>   307 |       bool is_file_backed () const { return valid() ? io->is_file_backed() : false; }
>       |                                                         ^~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/header.h: In member function ‘void MR::Header::sanitise()’:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> ./core/header.h:311:9: note: in expansion of macro ‘DEBUG’
>   311 |         DEBUG ("sanitising image information...");
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h: In member function ‘void MR::Header::sanitise_strides()’:
> ./core/header.h:388:9: error: ‘template<int OuterStrideAtCompileTime, int InnerStrideAtCompileTime> class Eigen::Stride’ used without template arguments
>   388 |         Stride::sanitise (*this);
>       |         ^~~~~~
> ./core/header.h:389:9: error: ‘template<int OuterStrideAtCompileTime, int InnerStrideAtCompileTime> class Eigen::Stride’ used without template arguments
>   389 |         Stride::actualise (*this);
>       |         ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/header.h: At global scope:
> ./core/header.h:393:20: error: ‘Header’ was not declared in this scope; did you mean ‘MR::Header’?
>   393 |   CHECK_MEM_ALIGN (Header);
>       |                    ^~~~~~
> ./core/types.h:207:30: note: in definition of macro ‘CHECK_MEM_ALIGN’
>   207 |     static_assert ( (alignof(__VA_ARGS__) <= ::MR::malloc_align) || __has_custom_new_operator<__VA_ARGS__>::value, \
>       |                              ^~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:48:9: note: ‘MR::Header’ declared here
>    48 |   class Header { MEMALIGN (Header)
>       |         ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/header.h:393:20: error: ‘Header’ was not declared in this scope; did you mean ‘MR::Header’?
>   393 |   CHECK_MEM_ALIGN (Header);
>       |                    ^~~~~~
> ./core/types.h:207:95: note: in definition of macro ‘CHECK_MEM_ALIGN’
>   207 |     static_assert ( (alignof(__VA_ARGS__) <= ::MR::malloc_align) || __has_custom_new_operator<__VA_ARGS__>::value, \
>       |                                                                                               ^~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:48:9: note: ‘MR::Header’ declared here
>    48 |   class Header { MEMALIGN (Header)
>       |         ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:207:106: error: template argument 1 is invalid
>   207 |     static_assert ( (alignof(__VA_ARGS__) <= ::MR::malloc_align) || __has_custom_new_operator<__VA_ARGS__>::value, \
>       |                                                                                                          ^
> ./core/header.h:393:3: note: in expansion of macro ‘CHECK_MEM_ALIGN’
>   393 |   CHECK_MEM_ALIGN (Header);
>       |   ^~~~~~~~~~~~~~~
> In file included from core/file/config.cpp:19:
> ./core/header.h:399:3: error: ‘Header’ does not name a type
>   399 |   Header concatenate (const vector<Header>& headers, const size_t axis, const bool permit_datatype_mismatch);
>       |   ^~~~~~
> ./core/header.h:407:25: error: ‘Header’ has not been declared
>   407 |   inline const ssize_t& Header::size (size_t axis) const { return axes_[axis].size; }
>       |                         ^~~~~~
> ./core/header.h:407:52: error: non-member function ‘const ssize_t& Eigen::size(std::size_t)’ cannot have cv-qualifier
>   407 |   inline const ssize_t& Header::size (size_t axis) const { return axes_[axis].size; }
>       |                                                    ^~~~~
> ./core/header.h: In function ‘const ssize_t& Eigen::size(std::size_t)’:
> ./core/header.h:407:67: error: ‘axes_’ was not declared in this scope
>   407 |   inline const ssize_t& Header::size (size_t axis) const { return axes_[axis].size; }
>       |                                                                   ^~~~~
> ./core/header.h: At global scope:
> ./core/header.h:408:19: error: ‘Header’ has not been declared
>   408 |   inline ssize_t& Header::size (size_t axis) { return axes_[axis].size; }
>       |                   ^~~~~~
> ./core/header.h: In function ‘ssize_t& Eigen::size(std::size_t)’:
> ./core/header.h:408:55: error: ‘axes_’ was not declared in this scope
>   408 |   inline ssize_t& Header::size (size_t axis) { return axes_[axis].size; }
>       |                                                       ^~~~~
> ./core/header.h: At global scope:
> ./core/header.h:410:16: error: ‘default_type’ does not name a type
>   410 |   inline const default_type& Header::spacing (size_t axis) const { return axes_[axis].spacing; }
>       |                ^~~~~~~~~~~~
> ./core/header.h:411:10: error: ‘default_type’ does not name a type
>   411 |   inline default_type& Header::spacing (size_t axis) { return axes_[axis].spacing; }
>       |          ^~~~~~~~~~~~
> ./core/header.h:413:25: error: ‘Header’ has not been declared
>   413 |   inline const ssize_t& Header::stride (size_t axis) const { return axes_[axis].stride; }
>       |                         ^~~~~~
> ./core/header.h:413:54: error: non-member function ‘const ssize_t& Eigen::stride(std::size_t)’ cannot have cv-qualifier
>   413 |   inline const ssize_t& Header::stride (size_t axis) const { return axes_[axis].stride; }
>       |                                                      ^~~~~
> ./core/header.h: In function ‘const ssize_t& Eigen::stride(std::size_t)’:
> ./core/header.h:413:69: error: ‘axes_’ was not declared in this scope
>   413 |   inline const ssize_t& Header::stride (size_t axis) const { return axes_[axis].stride; }
>       |                                                                     ^~~~~
> ./core/header.h: At global scope:
> ./core/header.h:414:19: error: ‘Header’ has not been declared
>   414 |   inline ssize_t& Header::stride (size_t axis) { return axes_[axis].stride; }
>       |                   ^~~~~~
> ./core/header.h: In function ‘ssize_t& Eigen::stride(std::size_t)’:
> ./core/header.h:414:57: error: ‘axes_’ was not declared in this scope
>   414 |   inline ssize_t& Header::stride (size_t axis) { return axes_[axis].stride; }
>       |                                                         ^~~~~
> In file included from core/file/config.cpp:22:
> ./core/file/config.h: At global scope:
> ./core/file/config.h:51:16: error: ‘KeyValues’ does not name a type
>    51 |         static KeyValues config;
>       |                ^~~~~~~~~
> ./core/file/config.h: In static member function ‘static void MR::File::Config::set(const string&, const string&)’:
> ./core/file/config.h:34:11: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    34 |           config[key] = value;
>       |           ^~~~~~
>       |           Config
> ./core/file/config.h: In static member function ‘static std::string MR::File::Config::get(const string&)’:
> ./core/file/config.h:37:17: error: ‘KeyValues’ does not name a type
>    37 |           const KeyValues::const_iterator i = config.find (key);
>       |                 ^~~~~~~~~
> ./core/file/config.h:38:19: error: ‘i’ was not declared in this scope
>    38 |           return (i != config.end() ? i->second : "");
>       |                   ^
> ./core/file/config.h:38:24: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    38 |           return (i != config.end() ? i->second : "");
>       |                        ^~~~~~
>       |                        Config
> ./core/file/config.h: In static member function ‘static std::string MR::File::Config::get(const string&, const string&)’:
> ./core/file/config.h:41:11: error: ‘KeyValues’ has not been declared
>    41 |           KeyValues::iterator i = config.find (key);
>       |           ^~~~~~~~~
> ./core/file/config.h:42:19: error: ‘i’ was not declared in this scope
>    42 |           return (i != config.end() ? i->second : default_value);
>       |                   ^
> ./core/file/config.h:42:24: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    42 |           return (i != config.end() ? i->second : default_value);
>       |                        ^~~~~~
>       |                        Config
> core/file/config.cpp: At global scope:
> core/file/config.cpp:35:5: error: ‘KeyValues’ does not name a type
>    35 |     KeyValues Config::config;
>       |     ^~~~~~~~~
> core/file/config.cpp:44:10: error: ‘Config’ has not been declared
>    44 |     void Config::init ()
>       |          ^~~~~~
> core/file/config.cpp: In function ‘void Eigen::init()’:
> core/file/config.cpp:50:11: error: ‘Path’ has not been declared
>    50 |       if (Path::is_file (sysconf_location)) {
>       |           ^~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:74:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:51:9: note: in expansion of macro ‘INFO’
>    51 |         INFO (std::string("reading config file \"") + sysconf_location + "\"...");
>       |         ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:53:11: error: ‘KeyValue’ has not been declared
>    53 |           KeyValue::Reader kv (sysconf_location);
>       |           ^~~~~~~~
> core/file/config.cpp:54:18: error: ‘kv’ was not declared in this scope
>    54 |           while (kv.next()) {
>       |                  ^~
> core/file/config.cpp:55:13: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    55 |             config[kv.key()] = kv.value();
>       |             ^~~~~~
>       |             Config
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:60:9: note: in expansion of macro ‘DEBUG’
>    60 |         DEBUG (std::string ("No config file found at \"") + sysconf_location + "\"");
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:63:26: error: ‘Path’ has not been declared
>    63 |       std::string path = Path::join (Path::home(), MRTRIX_USER_CONFIG_FILE);
>       |                          ^~~~
> core/file/config.cpp:63:38: error: ‘Path’ has not been declared
>    63 |       std::string path = Path::join (Path::home(), MRTRIX_USER_CONFIG_FILE);
>       |                                      ^~~~
> core/file/config.cpp:64:11: error: ‘Path’ has not been declared
>    64 |       if (Path::is_file (path)) {
>       |           ^~~~
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:74:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:65:9: note: in expansion of macro ‘INFO’
>    65 |         INFO ("reading config file \"" + path + "\"...");
>       |         ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:67:11: error: ‘KeyValue’ has not been declared
>    67 |           KeyValue::Reader kv (path);
>       |           ^~~~~~~~
> core/file/config.cpp:68:18: error: ‘kv’ was not declared in this scope
>    68 |           while (kv.next()) {
>       |                  ^~
> core/file/config.cpp:69:13: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    69 |             config[kv.key()] = kv.value();
>       |             ^~~~~~
>       |             Config
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:74:9: note: in expansion of macro ‘DEBUG’
>    74 |         DEBUG ("No config file found at \"" + path + "\"");
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:77:18: error: ‘App’ has not been declared
>    77 |       auto opt = App::get_options ("config");
>       |                  ^~~
> core/file/config.cpp:79:9: error: ‘config’ was not declared in this scope; did you mean ‘Config’?
>    79 |         config[std::string(keyval[0])] = std::string(keyval[1]);
>       |         ^~~~~~
>       |         Config
> core/file/config.cpp:85:7: error: ‘Header’ has not been declared
>    85 |       Header::do_realign_transform = get_bool("RealignTransform", true);
>       |       ^~~~~~
> core/file/config.cpp:85:38: error: ‘get_bool’ was not declared in this scope
>    85 |       Header::do_realign_transform = get_bool("RealignTransform", true);
>       |                                      ^~~~~~~~
> core/file/config.cpp: At global scope:
> core/file/config.cpp:90:10: error: ‘Config’ has not been declared
>    90 |     bool Config::get_bool (const std::string& key, bool default_value)
>       |          ^~~~~~
> core/file/config.cpp: In function ‘bool Eigen::get_bool(const string&, bool)’:
> core/file/config.cpp:92:31: error: no matching function for call to ‘get(const string&)’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:223:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’
>   223 |     get(pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:223:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:228:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)’
>   228 |     get(pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:228:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:233:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)’
>   233 |     get(const pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:233:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:238:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(const std::pair<_Tp1, _Tp2>&&)’
>   238 |     get(const pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:238:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:361:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)’
>   361 |     get(array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:361:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:369:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)’
>   369 |     get(array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:369:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:377:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)’
>   377 |     get(const array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:377:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:385:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp&& std::get(const std::array<_Tp, _Nm>&&)’
>   385 |     get(const array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:385:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1397:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(std::tuple<_Types ...>&)’
>  1397 |     get(tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1397:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1403:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(const std::tuple<_Types ...>&)’
>  1403 |     get(const tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1403:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1409:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(std::tuple<_Types ...>&&)’
>  1409 |     get(tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1409:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1418:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(const std::tuple<_Types ...>&&)’
>  1418 |     get(const tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1418:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:92:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>    92 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> core/file/config.cpp:96:16: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>    96 |         return to<bool> (value);
>       |                ^~
>       |                Eigen::to
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> core/file/config.cpp:96:19: error: expected primary-expression before ‘bool’
>    96 |         return to<bool> (value);
>       |                   ^~~~
> core/file/config.cpp:96:19: error: expected ‘;’ before ‘bool’
>    96 |         return to<bool> (value);
>       |                   ^~~~
>       |                   ;
> core/file/config.cpp:96:23: error: expected unqualified-id before ‘>’ token
>    96 |         return to<bool> (value);
>       |                       ^
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:99:9: note: in expansion of macro ‘WARN’
>    99 |         WARN ("malformed boolean entry \"" + value + "\" for key \"" + key + "\" in configuration file - ignored");
>       |         ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp: At global scope:
> core/file/config.cpp:105:9: error: ‘Config’ has not been declared
>   105 |     int Config::get_int (const std::string& key, int default_value)
>       |         ^~~~~~
> core/file/config.cpp: In function ‘int Eigen::get_int(const string&, int)’:
> core/file/config.cpp:107:31: error: no matching function for call to ‘get(const string&)’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:223:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’
>   223 |     get(pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:223:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:228:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)’
>   228 |     get(pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:228:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:233:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)’
>   233 |     get(const pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:233:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:238:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(const std::pair<_Tp1, _Tp2>&&)’
>   238 |     get(const pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:238:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:361:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)’
>   361 |     get(array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:361:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:369:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)’
>   369 |     get(array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:369:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:377:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)’
>   377 |     get(const array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:377:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:385:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp&& std::get(const std::array<_Tp, _Nm>&&)’
>   385 |     get(const array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:385:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1397:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(std::tuple<_Types ...>&)’
>  1397 |     get(tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1397:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1403:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(const std::tuple<_Types ...>&)’
>  1403 |     get(const tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1403:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1409:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(std::tuple<_Types ...>&&)’
>  1409 |     get(tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1409:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1418:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(const std::tuple<_Types ...>&&)’
>  1418 |     get(const tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1418:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:107:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   107 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> core/file/config.cpp:111:16: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>   111 |         return to<int> (value);
>       |                ^~
>       |                Eigen::to
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> core/file/config.cpp:111:19: error: expected primary-expression before ‘int’
>   111 |         return to<int> (value);
>       |                   ^~~
> core/file/config.cpp:111:19: error: expected ‘;’ before ‘int’
>   111 |         return to<int> (value);
>       |                   ^~~
>       |                   ;
> core/file/config.cpp:111:22: error: expected unqualified-id before ‘>’ token
>   111 |         return to<int> (value);
>       |                      ^
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:114:9: note: in expansion of macro ‘WARN’
>   114 |         WARN ("malformed integer entry \"" + value + "\" for key \"" + key + "\" in configuration file - ignored");
>       |         ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp: At global scope:
> core/file/config.cpp:120:11: error: ‘Config’ has not been declared
>   120 |     float Config::get_float (const std::string& key, float default_value)
>       |           ^~~~~~
> core/file/config.cpp: In function ‘float Eigen::get_float(const string&, float)’:
> core/file/config.cpp:122:31: error: no matching function for call to ‘get(const string&)’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:223:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’
>   223 |     get(pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:223:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:228:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)’
>   228 |     get(pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:228:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:233:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)’
>   233 |     get(const pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:233:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:238:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(const std::pair<_Tp1, _Tp2>&&)’
>   238 |     get(const pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:238:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:361:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)’
>   361 |     get(array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:361:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:369:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)’
>   369 |     get(array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:369:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:377:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)’
>   377 |     get(const array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:377:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:385:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp&& std::get(const std::array<_Tp, _Nm>&&)’
>   385 |     get(const array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:385:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1397:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(std::tuple<_Types ...>&)’
>  1397 |     get(tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1397:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1403:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(const std::tuple<_Types ...>&)’
>  1403 |     get(const tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1403:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1409:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(std::tuple<_Types ...>&&)’
>  1409 |     get(tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1409:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1418:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(const std::tuple<_Types ...>&&)’
>  1418 |     get(const tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1418:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:122:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   122 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> core/file/config.cpp:126:16: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>   126 |         return to<float> (value);
>       |                ^~
>       |                Eigen::to
> In file included from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> core/file/config.cpp:126:19: error: expected primary-expression before ‘float’
>   126 |         return to<float> (value);
>       |                   ^~~~~
> core/file/config.cpp:126:19: error: expected ‘;’ before ‘float’
>   126 |         return to<float> (value);
>       |                   ^~~~~
>       |                   ;
> core/file/config.cpp:126:24: error: expected unqualified-id before ‘>’ token
>   126 |         return to<float> (value);
>       |                        ^
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:73:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    73 | #define WARN(msg) if (MR::App::log_level >= 1) report_to_user_func (msg, 1)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp:129:9: note: in expansion of macro ‘WARN’
>   129 |         WARN ("malformed floating-point entry \"" + value + "\" for key \"" + key + "\" in configuration file - ignored");
>       |         ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/config.cpp: At global scope:
> core/file/config.cpp:136:10: error: ‘Config’ has not been declared
>   136 |     void Config::get_RGB (const std::string& key, float* ret, float default_R, float default_G, float default_B)
>       |          ^~~~~~
> core/file/config.cpp: In function ‘void Eigen::get_RGB(const string&, float*, float, float, float)’:
> core/file/config.cpp:138:31: error: no matching function for call to ‘get(const string&)’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:223:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’
>   223 |     get(pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:223:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:228:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)’
>   228 |     get(pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:228:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::pair<_Tp1, _Tp2>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:233:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)’
>   233 |     get(const pair<_Tp1, _Tp2>& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:233:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:38,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/utility:238:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(const std::pair<_Tp1, _Tp2>&&)’
>   238 |     get(const pair<_Tp1, _Tp2>&& __in) noexcept
>       |     ^~~
> /usr/include/c++/11/utility:238:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::pair<_Tp1, _Tp2>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:361:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)’
>   361 |     get(array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:361:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:369:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)’
>   369 |     get(array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:369:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::array<_Tp, _Nm>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:377:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)’
>   377 |     get(const array<_Tp, _Nm>& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:377:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/tuple:39,
>                  from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/array:385:5: note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp&& std::get(const std::array<_Tp, _Nm>&&)’
>   385 |     get(const array<_Tp, _Nm>&& __arr) noexcept
>       |     ^~~
> /usr/include/c++/11/array:385:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::array<_Tp, _Nm>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1397:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(std::tuple<_Types ...>&)’
>  1397 |     get(tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1397:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1403:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >& std::get(const std::tuple<_Types ...>&)’
>  1403 |     get(const tuple<_Elements...>& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1403:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1409:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(std::tuple<_Types ...>&&)’
>  1409 |     get(tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1409:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   types ‘std::tuple<_Types ...>’ and ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} have incompatible cv-qualifiers
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> In file included from /usr/include/c++/11/bits/std_thread.h:40,
>                  from /usr/include/c++/11/thread:43,
>                  from ./core/app.h:23,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/tuple:1418:5: note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_Types ...> >&& std::get(const std::tuple<_Types ...>&&)’
>  1418 |     get(const tuple<_Elements...>&& __t) noexcept
>       |     ^~~
> /usr/include/c++/11/tuple:1418:5: note:   template argument deduction/substitution failed:
> core/file/config.cpp:138:31: note:   ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} is not derived from ‘const std::tuple<_Types ...>’
>   138 |       std::string value = get (key);
>       |                           ~~~~^~~~~
> core/file/config.cpp:141:11: error: ‘vector’ was not declared in this scope
>   141 |           vector<default_type> V (parse_floats (value));
>       |           ^~~~~~
> core/file/config.cpp:141:11: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> core/file/config.cpp:141:18: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>   141 |           vector<default_type> V (parse_floats (value));
>       |                  ^~~~~~~~~~~~
>       |                  MR::default_type
> In file included from ./core/mrtrix.h:37,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> core/file/config.cpp:141:35: error: ‘parse_floats’ was not declared in this scope
>   141 |           vector<default_type> V (parse_floats (value));
>       |                                   ^~~~~~~~~~~~
> core/file/config.cpp:141:32: error: ‘V’ was not declared in this scope
>   141 |           vector<default_type> V (parse_floats (value));
>       |                                ^
> core/file/config.cpp:143:19: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   143 |             throw Exception ("malformed RGB entry \"" + value + "\" for key \"" + key + "\" in configuration file - ignored");
>       |                   ^~~~~~~~~
>       |                   MR::Exception
> In file included from ./core/mrtrix.h:38,
>                  from ./core/cmdline_option.h:28,
>                  from ./core/app.h:29,
>                  from core/file/config.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/config.cpp:148:16: error: ‘Exception’ does not name a type
>   148 |         catch (Exception) { }
>       |                ^~~~~~~~~
> 
> ERROR: (  4/546) [CC] tmp/core/file/dicom/element.o
> 
> g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version with openmp" -pthread -fPIC -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -mmmx -msse -msse2 -mfpmath=sse -DMRTRIX_WORD64 -DMRTRIX_HAVE_EIGEN_UNSUPPORTED_SPECIAL_FUNCTIONS -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DMRTRIX_PNG_SUPPORT -idirafter /usr/include/libpng16 -DEIGEN_FFTW_DEFAULT -fopenmp -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -idirafter /usr/include/eigen3 core/file/dicom/element.cpp -o tmp/core/file/dicom/element.o
> 
> failed with output
> 
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:326:49: error: ‘using Vector3 = class Eigen::Matrix<double, 3, 1>’ redeclared as different kind of entity
>   326 |   using Vector3 = Matrix<MR::default_type, 3, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: previous declaration ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’
>   541 | EIGEN_MAKE_TYPEDEFS(3, 3)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:327:49: error: ‘using Vector4 = class Eigen::Matrix<double, 4, 1>’ redeclared as different kind of entity
>   327 |   using Vector4 = Matrix<MR::default_type, 4, 1>;
>       |                                                 ^
> In file included from /usr/include/eigen3/Eigen/Core:295,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/Matrix.h:542:1: note: previous declaration ‘template<class Type> using Vector4 = Eigen::Matrix<Type, 4, 1>’
>   542 | EIGEN_MAKE_TYPEDEFS(4, 4)
>       | ^~~~~~~~~~~~~~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:112:7: error: ‘vector’ does not name a type
>   112 |       vector<std::string> description;
>       |       ^~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const string&)’:
> ./core/exception.h:85:9: error: ‘description’ was not declared in this scope
>    85 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In constructor ‘MR::Exception::Exception(const MR::Exception&, const string&)’:
> ./core/exception.h:88:9: error: class ‘MR::Exception’ does not have any field named ‘description’
>    88 |         description (previous_exception.description) {
>       |         ^~~~~~~~~~~
> ./core/exception.h:88:41: error: ‘const class MR::Exception’ has no member named ‘description’
>    88 |         description (previous_exception.description) {
>       |                                         ^~~~~~~~~~~
> ./core/exception.h:89:9: error: ‘description’ was not declared in this scope
>    89 |         description.push_back (msg);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘std::size_t MR::Exception::num() const’:
> ./core/exception.h:97:16: error: ‘description’ was not declared in this scope
>    97 |         return description.size();
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘const string& MR::Exception::operator[](std::size_t) const’:
> ./core/exception.h:100:16: error: ‘description’ was not declared in this scope
>   100 |         return description[n];
>       |                ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const string&)’:
> ./core/exception.h:103:9: error: ‘description’ was not declared in this scope
>   103 |         description.push_back (s);
>       |         ^~~~~~~~~~~
> ./core/exception.h: In member function ‘void MR::Exception::push_back(const MR::Exception&)’:
> ./core/exception.h:106:25: error: ‘const class MR::Exception’ has no member named ‘description’
>   106 |         for (auto s : e.description)
>       |                         ^~~~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:115:50: error: expected class-name before ‘{’ token
>   115 |   class InvalidImageException : public Exception { NOMEMALIGN
>       |                                                  ^
> ./core/exception.h:118:36: error: ‘Exception’ does not name a type
>   118 |       InvalidImageException (const Exception& previous_exception, const std::string& msg)
>       |                                    ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const string&)’:
> ./core/exception.h:117:56: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   117 |       InvalidImageException (const std::string& msg) : Exception(msg) {}
>       |                                                        ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::InvalidImageException::InvalidImageException(const int&, const string&)’:
> ./core/exception.h:119:11: error: class ‘MR::InvalidImageException’ does not have any field named ‘Exception’
>   119 |         : Exception(previous_exception, msg) {}
>       |           ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:123:44: error: expected class-name before ‘{’ token
>   123 |   class CancelException : public Exception { NOMEMALIGN
>       |                                            ^
> ./core/exception.h: In constructor ‘MR::CancelException::CancelException()’:
> ./core/exception.h:125:28: error: class ‘MR::CancelException’ does not have any field named ‘Exception’
>   125 |       CancelException () : Exception ("operation cancelled by user") { }
>       |                            ^~~~~~~~~
> ./core/exception.h: At global scope:
> ./core/exception.h:128:41: error: ‘Exception’ does not name a type
>   128 |   void display_exception_cmdline (const Exception& E, int log_level);
>       |                                         ^~~~~~~~~
> ./core/exception.h: In constructor ‘MR::LogLevelLatch::LogLevelLatch(int)’:
> ./core/exception.h:137:23: error: ‘App’ has not been declared
>   137 |           prev_level (App::log_level)
>       |                       ^~~
> ./core/exception.h:139:9: error: ‘App’ has not been declared
>   139 |         App::log_level = new_level;
>       |         ^~~
> ./core/exception.h: In destructor ‘MR::LogLevelLatch::~LogLevelLatch()’:
> ./core/exception.h:142:9: error: ‘App’ has not been declared
>   142 |         App::log_level = prev_level;
>       |         ^~~
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.h: At global scope:
> /usr/include/c++/11/bits/locale_facets_nonio.h:59:39: error: ‘locale’ has not been declared
>    59 |     struct __timepunct_cache : public locale::facet
>       |                                       ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:59:47: error: expected ‘{’ before ‘facet’
>    59 |     struct __timepunct_cache : public locale::facet
>       |                                               ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:150:5: error: ‘__timepunct_cache’ does not name a type
>   150 |     __timepunct_cache<_CharT>::~__timepunct_cache()
>       |     ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:161:22: error: expected initializer before ‘<’ token
>   161 |     __timepunct_cache<char>::_S_timezones[14];
>       |                      ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:166:22: error: expected initializer before ‘<’ token
>   166 |     __timepunct_cache<wchar_t>::_S_timezones[14];
>       |                      ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:171:36: error: expected initializer before ‘<’ token
>   171 |     const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
>       |                                    ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:174:32: error: ‘locale’ has not been declared
>   174 |     class __timepunct : public locale::facet
>       |                                ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:174:40: error: expected ‘{’ before ‘facet’
>   174 |     class __timepunct : public locale::facet
>       |                                        ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:320:5: error: ‘locale’ does not name a type
>   320 |     locale::id __timepunct<_CharT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:325:16: error: expected initializer before ‘<’ token
>   325 |     __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:329:16: error: expected initializer before ‘<’ token
>   329 |     __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:334:16: error: expected initializer before ‘<’ token
>   334 |     __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
>       |                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:338:16: error: expected initializer before ‘<’ token
>   338 |     __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
>       |                ^
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:346,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:42:5: error: ‘__timepunct’ does not name a type
>    42 |     __timepunct<_CharT>::__timepunct(size_t __refs)
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:48:5: error: ‘__timepunct’ does not name a type
>    48 |     __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:54:5: error: ‘__timepunct’ does not name a type
>    54 |     __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
>       |     ^~~~~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h:80:5: error: ‘__timepunct’ does not name a type
>    80 |     __timepunct<_CharT>::~__timepunct()
>       |     ^~~~~~~~~~~
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.h:368:29: error: ‘locale’ has not been declared
>   368 |     class time_get : public locale::facet, public time_base
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:368:37: error: expected ‘{’ before ‘facet’
>   368 |     class time_get : public locale::facet, public time_base
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:756:5: error: ‘locale’ does not name a type
>   756 |     locale::id time_get<_CharT, _InIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:760:44: error: expected template-name before ‘<’ token
>   760 |     class time_get_byname : public time_get<_CharT, _InIter>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:760:44: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:797:29: error: ‘locale’ has not been declared
>   797 |     class time_put : public locale::facet
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:797:37: error: expected ‘{’ before ‘facet’
>   797 |     class time_put : public locale::facet
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:889:5: error: ‘locale’ does not name a type
>   889 |     locale::id time_put<_CharT, _OutIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:893:44: error: expected template-name before ‘<’ token
>   893 |     class time_put_byname : public time_put<_CharT, _OutIter>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:893:44: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:40: error: ‘locale’ has not been declared
>   954 |     struct __moneypunct_cache : public locale::facet
>       |                                        ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:48: error: expected ‘{’ before ‘facet’
>   954 |     struct __moneypunct_cache : public locale::facet
>       |                                                ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1003:5: error: ‘__moneypunct_cache’ does not name a type
>  1003 |     __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
>       |     ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1024:31: error: ‘locale’ has not been declared
>  1024 |     class moneypunct : public locale::facet, public money_base
>       |                               ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1024:39: error: expected ‘{’ before ‘facet’
>  1024 |     class moneypunct : public locale::facet, public money_base
>       |                                       ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1375:5: error: ‘locale’ does not name a type
>  1375 |     locale::id moneypunct<_CharT, _Intl>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1378:26: error: expected initializer before ‘<’ token
>  1378 |     const bool moneypunct<_CharT, _Intl>::intl;
>       |                          ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1381:5: error: ‘moneypunct’ does not name a type
>  1381 |     moneypunct<char, true>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1384:5: error: ‘moneypunct’ does not name a type
>  1384 |     moneypunct<char, false>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1388:15: error: expected initializer before ‘<’ token
>  1388 |     moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1392:15: error: expected initializer before ‘<’ token
>  1392 |     moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1396:5: error: ‘moneypunct’ does not name a type
>  1396 |     moneypunct<wchar_t, true>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1399:5: error: ‘moneypunct’ does not name a type
>  1399 |     moneypunct<wchar_t, false>::~moneypunct();
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1403:15: error: expected initializer before ‘<’ token
>  1403 |     moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1408:15: error: expected initializer before ‘<’ token
>  1408 |     moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
>       |               ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1414:48: error: expected template-name before ‘<’ token
>  1414 |     class moneypunct_byname : public moneypunct<_CharT, _Intl>
>       |                                                ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1414:48: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/locale_facets_nonio.h:1448:33: error: expected initializer before ‘<’ token
>  1448 |     const bool moneypunct_byname<_CharT, _Intl>::intl;
>       |                                 ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1468:30: error: ‘locale’ has not been declared
>  1468 |     class money_get : public locale::facet
>       |                              ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1468:38: error: expected ‘{’ before ‘facet’
>  1468 |     class money_get : public locale::facet
>       |                                      ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1613:5: error: ‘locale’ does not name a type
>  1613 |     locale::id money_get<_CharT, _InIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1629:30: error: ‘locale’ has not been declared
>  1629 |     class money_put : public locale::facet
>       |                              ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1629:38: error: expected ‘{’ before ‘facet’
>  1629 |     class money_put : public locale::facet
>       |                                      ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1778:5: error: ‘locale’ does not name a type
>  1778 |     locale::id money_put<_CharT, _OutIter>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1815:29: error: ‘locale’ has not been declared
>  1815 |     class messages : public locale::facet, public messages_base
>       |                             ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1815:37: error: expected ‘{’ before ‘facet’
>  1815 |     class messages : public locale::facet, public messages_base
>       |                                     ^~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1984:5: error: ‘locale’ does not name a type
>  1984 |     locale::id messages<_CharT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1988:5: error: ‘string’ does not name a type
>  1988 |     string
>       |     ^~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1993:5: error: ‘wstring’ does not name a type
>  1993 |     wstring
>       |     ^~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.h:1999:44: error: expected template-name before ‘<’ token
>  1999 |     class messages_byname : public messages<_CharT>
>       |                                            ^
> /usr/include/c++/11/bits/locale_facets_nonio.h:1999:44: error: expected ‘{’ before ‘<’ token
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2026,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:44:5: error: ‘messages’ does not name a type
>    44 |     messages<_CharT>::messages(size_t __refs)
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:50:5: error: ‘messages’ does not name a type
>    50 |     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:69:14: error: expected nested-name-specifier before ‘messages’
>    69 |     typename messages<_CharT>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:69:22: error: expected initializer before ‘<’ token
>    69 |     typename messages<_CharT>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:79:5: error: ‘messages’ does not name a type
>    79 |     messages<_CharT>::~messages()
>       |     ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:87:14: error: expected nested-name-specifier before ‘messages’
>    87 |     typename messages<_CharT>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:87:22: error: expected initializer before ‘<’ token
>    87 |     typename messages<_CharT>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:99:13: error: expected initializer before ‘<’ token
>    99 |     messages<_CharT>::do_close(catalog) const
>       |             ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:104:5: error: ‘messages_byname’ does not name a type; did you mean ‘messages_base’?
>   104 |     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
>       |     ^~~~~~~~~~~~~~~
>       |     messages_base
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:131:14: error: expected nested-name-specifier before ‘messages’
>   131 |     typename messages<char>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:131:22: error: expected initializer before ‘<’ token
>   131 |     typename messages<char>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:137:13: error: expected initializer before ‘<’ token
>   137 |     messages<char>::do_close(catalog) const;
>       |             ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:141:14: error: expected nested-name-specifier before ‘messages’
>   141 |     typename messages<wchar_t>::catalog
>       |              ^~~~~~~~
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:141:22: error: expected initializer before ‘<’ token
>   141 |     typename messages<wchar_t>::catalog
>       |                      ^
> /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:147:13: error: expected initializer before ‘<’ token
>   147 |     messages<wchar_t>::do_close(catalog) const;
>       |             ^
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2029,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/codecvt.h:72:14: error: ‘locale’ has not been declared
>    72 |     : public locale::facet, public codecvt_base
>       |              ^~~~~~
> /usr/include/c++/11/bits/codecvt.h:72:22: error: expected ‘{’ before ‘facet’
>    72 |     : public locale::facet, public codecvt_base
>       |                      ^~~~~
> /usr/include/c++/11/bits/codecvt.h:278:37: error: expected template-name before ‘<’ token
>   278 |     : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:278:37: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/codecvt.h:337:5: error: ‘locale’ does not name a type
>   337 |     locale::id codecvt<_InternT, _ExternT, _StateT>::id;
>       |     ^~~~~~
> /usr/include/c++/11/bits/codecvt.h:341:11: error: ‘codecvt’ is not a class template
>   341 |     class codecvt<char, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:341:40: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   341 |     class codecvt<char, char, mbstate_t>
>       |                                        ^
> /usr/include/c++/11/bits/codecvt.h:342:37: error: expected template-name before ‘<’ token
>   342 |     : public __codecvt_abstract_base<char, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:404:11: error: ‘codecvt’ is not a class template
>   404 |     class codecvt<wchar_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:404:43: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   404 |     class codecvt<wchar_t, char, mbstate_t>
>       |                                           ^
> /usr/include/c++/11/bits/codecvt.h:405:37: error: expected template-name before ‘<’ token
>   405 |     : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:470:11: error: ‘codecvt’ is not a class template
>   470 |     class codecvt<char16_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:470:44: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   470 |     class codecvt<char16_t, char, mbstate_t>
>       |                                            ^
> /usr/include/c++/11/bits/codecvt.h:471:37: error: expected template-name before ‘<’ token
>   471 |     : public __codecvt_abstract_base<char16_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:527:11: error: ‘codecvt’ is not a class template
>   527 |     class codecvt<char32_t, char, mbstate_t>
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:527:44: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt’
>   527 |     class codecvt<char32_t, char, mbstate_t>
>       |                                            ^
> /usr/include/c++/11/bits/codecvt.h:528:37: error: expected template-name before ‘<’ token
>   528 |     : public __codecvt_abstract_base<char32_t, char, mbstate_t>
>       |                                     ^
> /usr/include/c++/11/bits/codecvt.h:699:42: error: expected template-name before ‘<’ token
>   699 |     class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
>       |                                          ^
> /usr/include/c++/11/bits/codecvt.h:699:42: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/codecvt.h:727:11: error: ‘codecvt_byname’ is not a class template
>   727 |     class codecvt_byname<char16_t, char, mbstate_t>
>       |           ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:727:51: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt_byname’
>   727 |     class codecvt_byname<char16_t, char, mbstate_t>
>       |                                                   ^
> /usr/include/c++/11/bits/codecvt.h:728:21: error: expected template-name before ‘<’ token
>   728 |     : public codecvt<char16_t, char, mbstate_t>
>       |                     ^
> /usr/include/c++/11/bits/codecvt.h:745:11: error: ‘codecvt_byname’ is not a class template
>   745 |     class codecvt_byname<char32_t, char, mbstate_t>
>       |           ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:745:51: error: template specifiers not specified in declaration of ‘template<class _InternT, class _ExternT, class _StateT> class std::codecvt_byname’
>   745 |     class codecvt_byname<char32_t, char, mbstate_t>
>       |                                                   ^
> /usr/include/c++/11/bits/codecvt.h:746:21: error: expected template-name before ‘<’ token
>   746 |     : public codecvt<char32_t, char, mbstate_t>
>       |                     ^
> /usr/include/c++/11/bits/codecvt.h:805:25: error: ‘codecvt_byname’ is not a class template
>   805 |   extern template class codecvt_byname<char, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:805:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:808:11: error: ‘codecvt’ is not a template function
>   808 |     const codecvt<char, char, mbstate_t>&
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:808:18: error: expected ‘;’ before ‘<’ token
>   808 |     const codecvt<char, char, mbstate_t>&
>       |                  ^
>       |                  ;
> /usr/include/c++/11/bits/codecvt.h:813:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>   813 |     has_facet<codecvt<char, char, mbstate_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:813:14: error: expected ‘;’ before ‘<’ token
>   813 |     has_facet<codecvt<char, char, mbstate_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/codecvt.h:816:25: error: ‘codecvt_byname’ is not a class template
>   816 |   extern template class codecvt_byname<wchar_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:816:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:819:11: error: ‘codecvt’ is not a template function
>   819 |     const codecvt<wchar_t, char, mbstate_t>&
>       |           ^~~~~~~
> /usr/include/c++/11/bits/codecvt.h:819:18: error: expected ‘;’ before ‘<’ token
>   819 |     const codecvt<wchar_t, char, mbstate_t>&
>       |                  ^
>       |                  ;
> /usr/include/c++/11/bits/codecvt.h:824:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>   824 |     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:824:14: error: expected ‘;’ before ‘<’ token
>   824 |     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/codecvt.h:828:25: error: ‘codecvt_byname’ is not a class template
>   828 |   extern template class codecvt_byname<char16_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:828:25: error: template argument required for ‘class codecvt_byname’
> /usr/include/c++/11/bits/codecvt.h:829:25: error: ‘codecvt_byname’ is not a class template
>   829 |   extern template class codecvt_byname<char32_t, char, mbstate_t>;
>       |                         ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/codecvt.h:829:25: error: template argument required for ‘class codecvt_byname’
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:12: error: ‘__use_cache’ is not a class template
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |            ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:24: error: ‘__moneypunct_cache’ was not declared in this scope; did you mean ‘std::__moneypunct_cache’?
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |                        ^~~~~~~~~~~~~~~~~~
>       |                        std::__moneypunct_cache
> In file included from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.h:954:12: note: ‘std::__moneypunct_cache’ declared here
>   954 |     struct __moneypunct_cache : public locale::facet
>       |            ^~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:12: error: template argument required for ‘struct __use_cache’
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |            ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:40:58: error: expected unqualified-id before ‘>’ token
>    40 |     struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
>       |                                                          ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:69:23: error: expected initializer before ‘<’ token
>    69 |     __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
>       |                       ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:136:7: error: too many template-parameter-lists
>   136 |       money_get<_CharT, _InIter>::
>       |       ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:370:14: error: expected initializer before ‘<’ token
>   370 |     money_get<_CharT, _InIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:383:14: error: expected initializer before ‘<’ token
>   383 |     money_get<_CharT, _InIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:423:7: error: too many template-parameter-lists
>   423 |       money_put<_CharT, _OutIter>::
>       |       ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:592:14: error: expected initializer before ‘<’ token
>   592 |     money_put<_CharT, _OutIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:630:14: error: expected initializer before ‘<’ token
>   630 |     money_put<_CharT, _OutIter>::
>       |              ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:683:5: error: ‘time_base’ does not name a type
>   683 |     time_base::dateorder
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:691:13: error: expected initializer before ‘<’ token
>   691 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:925:13: error: expected initializer before ‘<’ token
>   925 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:968:13: error: expected initializer before ‘<’ token
>   968 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1044:13: error: expected initializer before ‘<’ token
>  1044 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1116:13: error: expected initializer before ‘<’ token
>  1116 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1133:13: error: expected initializer before ‘<’ token
>  1133 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1150:13: error: expected initializer before ‘<’ token
>  1150 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1176:13: error: expected initializer before ‘<’ token
>  1176 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1202:13: error: expected initializer before ‘<’ token
>  1202 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1225:13: error: expected initializer before ‘<’ token
>  1225 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1297:13: error: expected initializer before ‘<’ token
>  1297 |     time_get<_CharT, _InIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1330:13: error: expected initializer before ‘<’ token
>  1330 |     time_put<_CharT, _OutIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1365:13: error: expected initializer before ‘<’ token
>  1365 |     time_put<_CharT, _OutIter>::
>       |             ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1407:25: error: ‘moneypunct’ is not a class template
>  1407 |   extern template class moneypunct<char, false>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1407:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1408:25: error: ‘moneypunct’ is not a class template
>  1408 |   extern template class moneypunct<char, true>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1408:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1409:25: error: ‘moneypunct_byname’ is not a class template
>  1409 |   extern template class moneypunct_byname<char, false>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1409:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1410:25: error: ‘moneypunct_byname’ is not a class template
>  1410 |   extern template class moneypunct_byname<char, true>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1410:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> In file included from /usr/include/c++/11/string:38,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1411:25: error: ‘__cxx11’ has not been declared
>  1411 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<char>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1411:67: error: expected unqualified-id before ‘<’ token
>  1411 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<char>;
>       |                                                                   ^
> In file included from /usr/include/c++/11/string:38,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1412:25: error: ‘__cxx11’ has not been declared
>  1412 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<char>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1412:67: error: expected unqualified-id before ‘<’ token
>  1412 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<char>;
>       |                                                                   ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1413:25: error: ‘__timepunct’ is not a class template
>  1413 |   extern template class __timepunct<char>;
>       |                         ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1413:25: error: template argument required for ‘class __timepunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1414:25: error: ‘time_put’ is not a class template
>  1414 |   extern template class time_put<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1414:25: error: template argument required for ‘class time_put’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1415:25: error: ‘time_put_byname’ is not a class template
>  1415 |   extern template class time_put_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1415:25: error: template argument required for ‘class time_put_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1416:25: error: ‘time_get’ is not a class template
>  1416 |   extern template class time_get<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1416:25: error: explicit instantiation of non-template type ‘std::time_get’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1417:25: error: ‘time_get_byname’ is not a class template
>  1417 |   extern template class time_get_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1417:25: error: explicit instantiation of non-template type ‘std::time_get_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1418:25: error: ‘messages’ is not a class template
>  1418 |   extern template class messages<char>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1418:25: error: explicit instantiation of non-template type ‘std::messages’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1419:25: error: ‘messages_byname’ is not a class template
>  1419 |   extern template class messages_byname<char>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1419:25: error: explicit instantiation of non-template type ‘std::messages_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1422:11: error: ‘moneypunct’ is not a template function
>  1422 |     const moneypunct<char, true>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1422:21: error: expected ‘;’ before ‘<’ token
>  1422 |     const moneypunct<char, true>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1426:11: error: ‘moneypunct’ is not a template function
>  1426 |     const moneypunct<char, false>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1426:21: error: expected ‘;’ before ‘<’ token
>  1426 |     const moneypunct<char, false>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1430:11: error: ‘money_put’ is not a template function
>  1430 |     const money_put<char>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1430:20: error: expected ‘;’ before ‘<’ token
>  1430 |     const money_put<char>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1434:11: error: ‘money_get’ is not a template function
>  1434 |     const money_get<char>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1434:20: error: expected ‘;’ before ‘<’ token
>  1434 |     const money_get<char>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1438:11: error: ‘__timepunct’ is not a template function
>  1438 |     const __timepunct<char>&
>       |           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1438:22: error: expected ‘;’ before ‘<’ token
>  1438 |     const __timepunct<char>&
>       |                      ^
>       |                      ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1442:11: error: ‘time_put’ is not a template function
>  1442 |     const time_put<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1442:19: error: expected ‘;’ before ‘<’ token
>  1442 |     const time_put<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1446:11: error: ‘time_get’ is not a template function
>  1446 |     const time_get<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1446:19: error: expected ‘;’ before ‘<’ token
>  1446 |     const time_get<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1450:11: error: ‘messages’ is not a template function
>  1450 |     const messages<char>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1450:19: error: expected ‘;’ before ‘<’ token
>  1450 |     const messages<char>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1455:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1455 |     has_facet<moneypunct<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1455:14: error: expected ‘;’ before ‘<’ token
>  1455 |     has_facet<moneypunct<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1459:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1459 |     has_facet<money_put<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1459:14: error: expected ‘;’ before ‘<’ token
>  1459 |     has_facet<money_put<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1463:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1463 |     has_facet<money_get<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1463:14: error: expected ‘;’ before ‘<’ token
>  1463 |     has_facet<money_get<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1467:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1467 |     has_facet<__timepunct<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1467:14: error: expected ‘;’ before ‘<’ token
>  1467 |     has_facet<__timepunct<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1471:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1471 |     has_facet<time_put<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1471:14: error: expected ‘;’ before ‘<’ token
>  1471 |     has_facet<time_put<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1475:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1475 |     has_facet<time_get<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1475:14: error: expected ‘;’ before ‘<’ token
>  1475 |     has_facet<time_get<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1479:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1479 |     has_facet<messages<char> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1479:14: error: expected ‘;’ before ‘<’ token
>  1479 |     has_facet<messages<char> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1482:25: error: ‘moneypunct’ is not a class template
>  1482 |   extern template class moneypunct<wchar_t, false>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1482:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1483:25: error: ‘moneypunct’ is not a class template
>  1483 |   extern template class moneypunct<wchar_t, true>;
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1483:25: error: explicit instantiation of non-template type ‘std::moneypunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1484:25: error: ‘moneypunct_byname’ is not a class template
>  1484 |   extern template class moneypunct_byname<wchar_t, false>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1484:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1485:25: error: ‘moneypunct_byname’ is not a class template
>  1485 |   extern template class moneypunct_byname<wchar_t, true>;
>       |                         ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1485:25: error: explicit instantiation of non-template type ‘std::moneypunct_byname’
> In file included from /usr/include/c++/11/string:38,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1486:25: error: ‘__cxx11’ has not been declared
>  1486 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1486:67: error: expected unqualified-id before ‘<’ token
>  1486 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_get<wchar_t>;
>       |                                                                   ^
> In file included from /usr/include/c++/11/string:38,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1487:25: error: ‘__cxx11’ has not been declared
>  1487 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/bits/locale_facets_nonio.h:2031,
>                  from /usr/include/c++/11/locale:41,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1487:67: error: expected unqualified-id before ‘<’ token
>  1487 |   extern template class _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 money_put<wchar_t>;
>       |                                                                   ^
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1488:25: error: ‘__timepunct’ is not a class template
>  1488 |   extern template class __timepunct<wchar_t>;
>       |                         ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1488:25: error: template argument required for ‘class __timepunct’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1489:25: error: ‘time_put’ is not a class template
>  1489 |   extern template class time_put<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1489:25: error: template argument required for ‘class time_put’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1490:25: error: ‘time_put_byname’ is not a class template
>  1490 |   extern template class time_put_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1490:25: error: template argument required for ‘class time_put_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1491:25: error: ‘time_get’ is not a class template
>  1491 |   extern template class time_get<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1491:25: error: explicit instantiation of non-template type ‘std::time_get’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1492:25: error: ‘time_get_byname’ is not a class template
>  1492 |   extern template class time_get_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1492:25: error: explicit instantiation of non-template type ‘std::time_get_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1493:25: error: ‘messages’ is not a class template
>  1493 |   extern template class messages<wchar_t>;
>       |                         ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1493:25: error: explicit instantiation of non-template type ‘std::messages’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1494:25: error: ‘messages_byname’ is not a class template
>  1494 |   extern template class messages_byname<wchar_t>;
>       |                         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1494:25: error: explicit instantiation of non-template type ‘std::messages_byname’
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1497:11: error: ‘moneypunct’ is not a template function
>  1497 |     const moneypunct<wchar_t, true>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1497:21: error: expected ‘;’ before ‘<’ token
>  1497 |     const moneypunct<wchar_t, true>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1501:11: error: ‘moneypunct’ is not a template function
>  1501 |     const moneypunct<wchar_t, false>&
>       |           ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1501:21: error: expected ‘;’ before ‘<’ token
>  1501 |     const moneypunct<wchar_t, false>&
>       |                     ^
>       |                     ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1505:11: error: ‘money_put’ is not a template function
>  1505 |     const money_put<wchar_t>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1505:20: error: expected ‘;’ before ‘<’ token
>  1505 |     const money_put<wchar_t>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1509:11: error: ‘money_get’ is not a template function
>  1509 |     const money_get<wchar_t>&
>       |           ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1509:20: error: expected ‘;’ before ‘<’ token
>  1509 |     const money_get<wchar_t>&
>       |                    ^
>       |                    ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1513:11: error: ‘__timepunct’ is not a template function
>  1513 |     const __timepunct<wchar_t>&
>       |           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1513:22: error: expected ‘;’ before ‘<’ token
>  1513 |     const __timepunct<wchar_t>&
>       |                      ^
>       |                      ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1517:11: error: ‘time_put’ is not a template function
>  1517 |     const time_put<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1517:19: error: expected ‘;’ before ‘<’ token
>  1517 |     const time_put<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1521:11: error: ‘time_get’ is not a template function
>  1521 |     const time_get<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1521:19: error: expected ‘;’ before ‘<’ token
>  1521 |     const time_get<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1525:11: error: ‘messages’ is not a template function
>  1525 |     const messages<wchar_t>&
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1525:19: error: expected ‘;’ before ‘<’ token
>  1525 |     const messages<wchar_t>&
>       |                   ^
>       |                   ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1530:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1530 |     has_facet<moneypunct<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1530:14: error: expected ‘;’ before ‘<’ token
>  1530 |     has_facet<moneypunct<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1534:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1534 |     has_facet<money_put<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1534:14: error: expected ‘;’ before ‘<’ token
>  1534 |     has_facet<money_put<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1538:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1538 |     has_facet<money_get<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1538:14: error: expected ‘;’ before ‘<’ token
>  1538 |     has_facet<money_get<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1542:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1542 |     has_facet<__timepunct<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1542:14: error: expected ‘;’ before ‘<’ token
>  1542 |     has_facet<__timepunct<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1546:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1546 |     has_facet<time_put<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1546:14: error: expected ‘;’ before ‘<’ token
>  1546 |     has_facet<time_put<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1550:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1550 |     has_facet<time_get<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1550:14: error: expected ‘;’ before ‘<’ token
>  1550 |     has_facet<time_get<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1554:5: error: ‘std::has_facet(const std::locale&)’ is not a variable template
>  1554 |     has_facet<messages<wchar_t> >(const locale&);
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/locale_facets_nonio.tcc:1554:14: error: expected ‘;’ before ‘<’ token
>  1554 |     has_facet<messages<wchar_t> >(const locale&);
>       |              ^
>       |              ;
> In file included from /usr/include/c++/11/locale:43,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__do_str_codecvt(const _InChar*, const _InChar*, _OutStr&, const _Codecvt&, _State&, std::size_t&, _Fn)’:
> /usr/include/c++/11/bits/locale_conv.h:70:7: error: ‘codecvt_base’ has not been declared
>    70 |       codecvt_base::result __result;
>       |       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:76:11: error: ‘__result’ was not declared in this scope
>    76 |           __result = (__cvt.*__fn)(__state, __next, __last, __next,
>       |           ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:80:14: error: ‘__result’ was not declared in this scope
>    80 |       while (__result == codecvt_base::partial && __next != __last
>       |              ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:80:26: error: ‘codecvt_base’ has not been declared
>    80 |       while (__result == codecvt_base::partial && __next != __last
>       |                          ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:83:23: error: ‘codecvt_base’ has not been declared
>    83 |       if (__result == codecvt_base::error)
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:91:32: error: ‘is_same’ was not declared in this scope
>    91 |       if _GLIBCXX17_CONSTEXPR (is_same<typename _Codecvt::intern_type,
>       |                                ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:91:32: note: suggested alternatives:
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/type_traits:614:12: note:   ‘std::is_same’
>   614 |     struct is_same;
>       |            ^~~~~~~
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:148:41: note:   ‘Eigen::internal::is_same’
>   148 | template<typename T, typename U> struct is_same { enum { value = 0 }; };
>       |                                         ^~~~~~~
> In file included from /usr/include/c++/11/locale:43,
>                  from /usr/include/c++/11/iomanip:43,
>                  from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/locale_conv.h:91:70: error: expected ‘(’ before ‘,’ token
>    91 |       if _GLIBCXX17_CONSTEXPR (is_same<typename _Codecvt::intern_type,
>       |                                                                      ^
>       |                                                                      (
> /usr/include/c++/11/bits/locale_conv.h:92:70: error: expected ‘(’ before ‘>’ token
>    92 |                                        typename _Codecvt::extern_type>())
>       |                                                                      ^
>       |                                                                      (
> /usr/include/c++/11/bits/locale_conv.h:92:72: error: expected primary-expression before ‘)’ token
>    92 |                                        typename _Codecvt::extern_type>())
>       |                                                                        ^
> /usr/include/c++/11/bits/locale_conv.h:93:25: error: ‘codecvt_base’ has not been declared
>    93 |         if (__result == codecvt_base::noconv)
>       |                         ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:109:22: error: ‘basic_string’ has not been declared
>   109 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                      ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:109:34: error: expected ‘,’ or ‘...’ before ‘<’ token
>   109 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                  ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:113:24: error: ‘codecvt’ does not name a type
>   113 |       using _Codecvt = codecvt<_CharT, char, _State>;
>       |                        ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:115:11: error: ‘codecvt_base’ does not name a type
>   115 |         = codecvt_base::result
>       |           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:118:7: error: ‘_ConvFn’ was not declared in this scope
>   118 |       _ConvFn __fn = &codecvt<_CharT, char, _State>::in;
>       |       ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:48: error: ‘__outstr’ was not declared in this scope
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:58: error: ‘__cvt’ was not declared in this scope
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:65: error: ‘__state’ was not declared in this scope; did you mean ‘_State’?
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                                 ^~~~~~~
>       |                                                                 _State
> /usr/include/c++/11/bits/locale_conv.h:120:31: error: ‘__count’ was not declared in this scope; did you mean ‘count’?
>   120 |                               __count, __fn);
>       |                               ^~~~~~~
>       |                               count
> /usr/include/c++/11/bits/locale_conv.h:120:40: error: ‘__fn’ was not declared in this scope; did you mean ‘__yn’?
>   120 |                               __count, __fn);
>       |                                        ^~~~
>       |                                        __yn
> /usr/include/c++/11/bits/locale_conv.h:119:14: error: there are no arguments to ‘__do_str_codecvt’ that depend on a template parameter, so a declaration of ‘__do_str_codecvt’ must be available [-fpermissive]
>   119 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |              ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:119:14: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:127:22: error: ‘basic_string’ has not been declared
>   127 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                      ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:127:34: error: expected ‘,’ or ‘...’ before ‘<’ token
>   127 |                      basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                  ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:132:48: error: ‘__outstr’ was not declared in this scope
>   132 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:132:58: error: ‘__cvt’ was not declared in this scope
>   132 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:139:26: error: ‘basic_string’ has not been declared
>   139 |                          basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                          ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:139:38: error: expected ‘,’ or ‘...’ before ‘<’ token
>   139 |                          basic_string<_CharT, _Traits, _Alloc>& __outstr,
>       |                                      ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_in_all(const char*, const char*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:144:48: error: ‘__outstr’ was not declared in this scope
>   144 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:144:58: error: ‘__cvt’ was not declared in this scope
>   144 |       return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:152:23: error: ‘basic_string’ has not been declared
>   152 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:152:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>   152 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                   ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:156:24: error: ‘codecvt’ does not name a type
>   156 |       using _Codecvt = codecvt<_CharT, char, _State>;
>       |                        ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:158:11: error: ‘codecvt_base’ does not name a type
>   158 |         = codecvt_base::result
>       |           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:161:7: error: ‘_ConvFn’ was not declared in this scope
>   161 |       _ConvFn __fn = &codecvt<_CharT, char, _State>::out;
>       |       ^~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:48: error: ‘__outstr’ was not declared in this scope
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:58: error: ‘__cvt’ was not declared in this scope
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                          ^~~~~
> /usr/include/c++/11/bits/locale_conv.h:162:65: error: ‘__state’ was not declared in this scope; did you mean ‘_State’?
>   162 |       return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
>       |                                                                 ^~~~~~~
>       |                                                                 _State
> /usr/include/c++/11/bits/locale_conv.h:163:31: error: ‘__count’ was not declared in this scope; did you mean ‘count’?
>   163 |                               __count, __fn);
>       |                               ^~~~~~~
>       |                               count
> /usr/include/c++/11/bits/locale_conv.h:163:40: error: ‘__fn’ was not declared in this scope; did you mean ‘__yn’?
>   163 |                               __count, __fn);
>       |                                        ^~~~
>       |                                        __yn
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:170:23: error: ‘basic_string’ has not been declared
>   170 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:170:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>   170 |                       basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                   ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:175:49: error: ‘__outstr’ was not declared in this scope
>   175 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                 ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:175:59: error: ‘__cvt’ was not declared in this scope
>   175 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
>       |                                                           ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:182:27: error: ‘basic_string’ has not been declared
>   182 |                           basic_string<char, _Traits, _Alloc>& __outstr,
>       |                           ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:182:39: error: expected ‘,’ or ‘...’ before ‘<’ token
>   182 |                           basic_string<char, _Traits, _Alloc>& __outstr,
>       |                                       ^
> /usr/include/c++/11/bits/locale_conv.h: In function ‘bool Eigen::__str_codecvt_out_all(const _CharT*, const _CharT*, int)’:
> /usr/include/c++/11/bits/locale_conv.h:187:49: error: ‘__outstr’ was not declared in this scope
>   187 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                 ^~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:187:59: error: ‘__cvt’ was not declared in this scope
>   187 |       return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n)
>       |                                                           ^~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:230:35: error: ‘allocator’ does not name a type
>   230 |            typename _Wide_alloc = allocator<_Elem>,
>       |                                   ^~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:230:44: error: expected ‘>’ before ‘<’ token
>   230 |            typename _Wide_alloc = allocator<_Elem>,
>       |                                            ^
> /usr/include/c++/11/bits/locale_conv.h:235:15: error: ‘basic_string’ does not name a type
>   235 |       typedef basic_string<char, char_traits<char>, _Byte_alloc>   byte_string;
>       |               ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:236:15: error: ‘basic_string’ does not name a type
>   236 |       typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string;
>       |               ^~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:238:24: error: ‘wide_string’ has not been declared
>   238 |       typedef typename wide_string::traits_type::int_type          int_type;
>       |                        ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:277:29: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   277 |       wstring_convert(const byte_string& __byte_err,
>       |                             ^~~~~~~~~~~
>       |                             basic_string
> /usr/include/c++/11/bits/locale_conv.h:278:29: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   278 |                       const wide_string& __wide_err = wide_string())
>       |                             ^~~~~~~~~~~
>       |                             wstring
> /usr/include/c++/11/bits/locale_conv.h:295:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   295 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:302:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   302 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:306:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   306 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:313:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   313 |       wide_string
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:329:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   329 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:336:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   336 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:342:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   342 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:349:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   349 |       byte_string
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:373:7: error: ‘unique_ptr’ does not name a type
>   373 |       unique_ptr<_Codecvt>      _M_cvt;
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:374:7: error: ‘byte_string’ does not name a type; did you mean ‘basic_string’?
>   374 |       byte_string               _M_byte_err_string;
>       |       ^~~~~~~~~~~
>       |       basic_string
> /usr/include/c++/11/bits/locale_conv.h:375:7: error: ‘wide_string’ does not name a type; did you mean ‘wstring’?
>   375 |       wide_string               _M_wide_err_string;
>       |       ^~~~~~~~~~~
>       |       wstring
> /usr/include/c++/11/bits/locale_conv.h:278:55: error: there are no arguments to ‘wide_string’ that depend on a template parameter, so a declaration of ‘wide_string’ must be available [-fpermissive]
>   278 |                       const wide_string& __wide_err = wide_string())
>       |                                                       ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert()’:
> /usr/include/c++/11/bits/locale_conv.h:241:27: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   241 |       wstring_convert() : _M_cvt(new _Codecvt()) { }
>       |                           ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(_Codecvt*)’:
> /usr/include/c++/11/bits/locale_conv.h:250:43: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   250 |       wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt)
>       |                                           ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:252:14: error: ‘_M_cvt’ was not declared in this scope; did you mean ‘__pcvt’?
>   252 |         if (!_M_cvt)
>       |              ^~~~~~
>       |              __pcvt
> /usr/include/c++/11/bits/locale_conv.h:253:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   253 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(_Codecvt*, std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::state_type)’:
> /usr/include/c++/11/bits/locale_conv.h:265:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   265 |       : _M_cvt(__pcvt), _M_state(__state), _M_with_cvtstate(true)
>       |         ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:267:14: error: ‘_M_cvt’ was not declared in this scope; did you mean ‘__pcvt’?
>   267 |         if (!_M_cvt)
>       |              ^~~~~~
>       |              __pcvt
> /usr/include/c++/11/bits/locale_conv.h:268:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   268 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: In constructor ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>::wstring_convert(const int&, const int&)’:
> /usr/include/c++/11/bits/locale_conv.h:279:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_cvt’
>   279 |       : _M_cvt(new _Codecvt),
>       |         ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:280:9: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_byte_err_string’
>   280 |         _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err),
>       |         ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:280:41: error: class ‘std::__cxx11::wstring_convert<_Codecvt, _Elem, _Wide_alloc>’ does not have any field named ‘_M_wide_err_string’
>   280 |         _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err),
>       |                                         ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:283:14: error: ‘_M_cvt’ was not declared in this scope
>   283 |         if (!_M_cvt)
>       |              ^~~~~~
> /usr/include/c++/11/bits/locale_conv.h:284:11: error: there are no arguments to ‘__throw_logic_error’ that depend on a template parameter, so a declaration of ‘__throw_logic_error’ must be available [-fpermissive]
>   284 |           __throw_logic_error("wstring_convert");
>       |           ^~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h: At global scope:
> /usr/include/c++/11/bits/locale_conv.h:386:27: error: ‘char_traits’ does not name a type
>   386 |            typename _Tr = char_traits<_Elem>>
>       |                           ^~~~~~~~~~~
> /usr/include/c++/11/bits/locale_conv.h:386:38: error: expected ‘>’ before ‘<’ token
>   386 |            typename _Tr = char_traits<_Elem>>
>       |                                      ^
> /usr/include/c++/11/bits/locale_conv.h:387:51: error: expected template-name before ‘<’ token
>   387 |     class wbuffer_convert : public basic_streambuf<_Elem, _Tr>
>       |                                                   ^
> /usr/include/c++/11/bits/locale_conv.h:387:51: error: expected ‘{’ before ‘<’ token
> In file included from ./core/mrtrix.h:34,
>                  from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/iomanip:56:27: error: ‘ios_base’ does not name a type
>    56 |   struct _Resetiosflags { ios_base::fmtflags _M_mask; };
>       |                           ^~~~~~~~
> /usr/include/c++/11/iomanip:65:10: error: ‘_Resetiosflags’ does not name a type
>    65 |   inline _Resetiosflags
>       |          ^~~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:70:12: error: ‘basic_istream’ does not name a type
>    70 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:78:12: error: ‘basic_ostream’ does not name a type
>    78 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:86:25: error: ‘ios_base’ does not name a type
>    86 |   struct _Setiosflags { ios_base::fmtflags _M_mask; };
>       |                         ^~~~~~~~
> /usr/include/c++/11/iomanip:95:10: error: ‘_Setiosflags’ does not name a type
>    95 |   inline _Setiosflags
>       |          ^~~~~~~~~~~~
> /usr/include/c++/11/iomanip:100:12: error: ‘basic_istream’ does not name a type
>   100 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:108:12: error: ‘basic_ostream’ does not name a type
>   108 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:126:10: error: ‘_Setbase’ does not name a type
>   126 |   inline _Setbase
>       |          ^~~~~~~~
> /usr/include/c++/11/iomanip:131:12: error: ‘basic_istream’ does not name a type
>   131 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:142:12: error: ‘basic_ostream’ does not name a type
>   142 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:164:12: error: ‘_Setfill’ does not name a type
>   164 |     inline _Setfill<_CharT>
>       |            ^~~~~~~~
> /usr/include/c++/11/iomanip:169:12: error: ‘basic_istream’ does not name a type
>   169 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:177:12: error: ‘basic_ostream’ does not name a type
>   177 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:194:10: error: ‘_Setprecision’ does not name a type
>   194 |   inline _Setprecision
>       |          ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:199:12: error: ‘basic_istream’ does not name a type
>   199 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:207:12: error: ‘basic_ostream’ does not name a type
>   207 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:224:10: error: ‘_Setw’ does not name a type
>   224 |   inline _Setw
>       |          ^~~~~
> /usr/include/c++/11/iomanip:229:12: error: ‘basic_istream’ does not name a type
>   229 |     inline basic_istream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:237:12: error: ‘basic_ostream’ does not name a type
>   237 |     inline basic_ostream<_CharT, _Traits>&
>       |            ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:258:12: error: ‘_Get_money’ does not name a type
>   258 |     inline _Get_money<_MoneyT>
>       |            ^~~~~~~~~~
> /usr/include/c++/11/iomanip:263:5: error: ‘basic_istream’ does not name a type
>   263 |     basic_istream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:305:12: error: ‘_Put_money’ does not name a type
>   305 |     inline _Put_money<_MoneyT>
>       |            ^~~~~~~~~~
> /usr/include/c++/11/iomanip:310:5: error: ‘basic_ostream’ does not name a type
>   310 |     basic_ostream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:357:12: error: ‘_Put_time’ does not name a type
>   357 |     inline _Put_time<_CharT>
>       |            ^~~~~~~~~
> /usr/include/c++/11/iomanip:362:5: error: ‘basic_ostream’ does not name a type
>   362 |     basic_ostream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:412:12: error: ‘_Get_time’ does not name a type
>   412 |     inline _Get_time<_CharT>
>       |            ^~~~~~~~~
> /usr/include/c++/11/iomanip:417:5: error: ‘basic_istream’ does not name a type
>   417 |     basic_istream<_CharT, _Traits>&
>       |     ^~~~~~~~~~~~~
> /usr/include/c++/11/iomanip:508:19: error: ‘ostream’ is not a template function
>   508 |   extern template ostream& operator<<(ostream&, _Setfill<char>);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:508:26: error: expected ‘;’ before ‘&’ token
>   508 |   extern template ostream& operator<<(ostream&, _Setfill<char>);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:509:19: error: ‘ostream’ is not a template function
>   509 |   extern template ostream& operator<<(ostream&, _Setiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:509:26: error: expected ‘;’ before ‘&’ token
>   509 |   extern template ostream& operator<<(ostream&, _Setiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:510:19: error: ‘ostream’ is not a template function
>   510 |   extern template ostream& operator<<(ostream&, _Resetiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:510:26: error: expected ‘;’ before ‘&’ token
>   510 |   extern template ostream& operator<<(ostream&, _Resetiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:511:19: error: ‘ostream’ is not a template function
>   511 |   extern template ostream& operator<<(ostream&, _Setbase);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:511:26: error: expected ‘;’ before ‘&’ token
>   511 |   extern template ostream& operator<<(ostream&, _Setbase);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:512:19: error: ‘ostream’ is not a template function
>   512 |   extern template ostream& operator<<(ostream&, _Setprecision);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:512:26: error: expected ‘;’ before ‘&’ token
>   512 |   extern template ostream& operator<<(ostream&, _Setprecision);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:513:19: error: ‘ostream’ is not a template function
>   513 |   extern template ostream& operator<<(ostream&, _Setw);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:513:26: error: expected ‘;’ before ‘&’ token
>   513 |   extern template ostream& operator<<(ostream&, _Setw);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:514:19: error: ‘istream’ is not a template function
>   514 |   extern template istream& operator>>(istream&, _Setfill<char>);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:514:26: error: expected ‘;’ before ‘&’ token
>   514 |   extern template istream& operator>>(istream&, _Setfill<char>);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:515:19: error: ‘istream’ is not a template function
>   515 |   extern template istream& operator>>(istream&, _Setiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:515:26: error: expected ‘;’ before ‘&’ token
>   515 |   extern template istream& operator>>(istream&, _Setiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:516:19: error: ‘istream’ is not a template function
>   516 |   extern template istream& operator>>(istream&, _Resetiosflags);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:516:26: error: expected ‘;’ before ‘&’ token
>   516 |   extern template istream& operator>>(istream&, _Resetiosflags);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:517:19: error: ‘istream’ is not a template function
>   517 |   extern template istream& operator>>(istream&, _Setbase);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:517:26: error: expected ‘;’ before ‘&’ token
>   517 |   extern template istream& operator>>(istream&, _Setbase);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:518:19: error: ‘istream’ is not a template function
>   518 |   extern template istream& operator>>(istream&, _Setprecision);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:518:26: error: expected ‘;’ before ‘&’ token
>   518 |   extern template istream& operator>>(istream&, _Setprecision);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:519:19: error: ‘istream’ is not a template function
>   519 |   extern template istream& operator>>(istream&, _Setw);
>       |                   ^~~~~~~
> /usr/include/c++/11/iomanip:519:26: error: expected ‘;’ before ‘&’ token
>   519 |   extern template istream& operator>>(istream&, _Setw);
>       |                          ^
>       |                          ;
> /usr/include/c++/11/iomanip:522:19: error: ‘wostream’ is not a template function
>   522 |   extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:522:27: error: expected ‘;’ before ‘&’ token
>   522 |   extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:523:19: error: ‘wostream’ is not a template function
>   523 |   extern template wostream& operator<<(wostream&, _Setiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:523:27: error: expected ‘;’ before ‘&’ token
>   523 |   extern template wostream& operator<<(wostream&, _Setiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:524:19: error: ‘wostream’ is not a template function
>   524 |   extern template wostream& operator<<(wostream&, _Resetiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:524:27: error: expected ‘;’ before ‘&’ token
>   524 |   extern template wostream& operator<<(wostream&, _Resetiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:525:19: error: ‘wostream’ is not a template function
>   525 |   extern template wostream& operator<<(wostream&, _Setbase);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:525:27: error: expected ‘;’ before ‘&’ token
>   525 |   extern template wostream& operator<<(wostream&, _Setbase);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:526:19: error: ‘wostream’ is not a template function
>   526 |   extern template wostream& operator<<(wostream&, _Setprecision);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:526:27: error: expected ‘;’ before ‘&’ token
>   526 |   extern template wostream& operator<<(wostream&, _Setprecision);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:527:19: error: ‘wostream’ is not a template function
>   527 |   extern template wostream& operator<<(wostream&, _Setw);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:527:27: error: expected ‘;’ before ‘&’ token
>   527 |   extern template wostream& operator<<(wostream&, _Setw);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:528:19: error: ‘wistream’ is not a template function
>   528 |   extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:528:27: error: expected ‘;’ before ‘&’ token
>   528 |   extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:529:19: error: ‘wistream’ is not a template function
>   529 |   extern template wistream& operator>>(wistream&, _Setiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:529:27: error: expected ‘;’ before ‘&’ token
>   529 |   extern template wistream& operator>>(wistream&, _Setiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:530:19: error: ‘wistream’ is not a template function
>   530 |   extern template wistream& operator>>(wistream&, _Resetiosflags);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:530:27: error: expected ‘;’ before ‘&’ token
>   530 |   extern template wistream& operator>>(wistream&, _Resetiosflags);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:531:19: error: ‘wistream’ is not a template function
>   531 |   extern template wistream& operator>>(wistream&, _Setbase);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:531:27: error: expected ‘;’ before ‘&’ token
>   531 |   extern template wistream& operator>>(wistream&, _Setbase);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:532:19: error: ‘wistream’ is not a template function
>   532 |   extern template wistream& operator>>(wistream&, _Setprecision);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:532:27: error: expected ‘;’ before ‘&’ token
>   532 |   extern template wistream& operator>>(wistream&, _Setprecision);
>       |                           ^
>       |                           ;
> /usr/include/c++/11/iomanip:533:19: error: ‘wistream’ is not a template function
>   533 |   extern template wistream& operator>>(wistream&, _Setw);
>       |                   ^~~~~~~~
> /usr/include/c++/11/iomanip:533:27: error: expected ‘;’ before ‘&’ token
>   533 |   extern template wistream& operator>>(wistream&, _Setw);
>       |                           ^
>       |                           ;
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:64:12: error: ‘max_digits’ is not a class template
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:64:91: error: redeclared with 1 template parameter
>    64 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<X>::value, int>::type> { NOMEMALIGN
>       |                                                                                           ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:12: error: ‘max_digits’ is not a class template
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:69:108: error: redeclared with 1 template parameter
>    69 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                            ^
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> ./core/mrtrix.h:74:12: error: ‘max_digits’ is not a class template
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:74:163: error: redeclared with 1 template parameter
>    74 |     struct max_digits<X, typename std::enable_if<std::is_fundamental<typename X::value_type>::value && !std::is_fundamental<typename X::Scalar>::value, int>::type> { NOMEMALIGN
>       |                                                                                                                                                                   ^
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:59:12: note: previous declaration ‘template<class X, class ReturnType> struct MR::max_digits’ used 2 template parameters
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h: In function ‘std::string Eigen::unquote(const string&)’:
> ./core/mrtrix.h:149:76: error: definition of ‘auto Eigen::unquote(const string&)::<lambda>::operator()(const char&) const’ is not in namespace enclosing ‘Eigen::unquote(const string&)::<lambda>’ [-fpermissive]
>   149 |     if (std::none_of (substring.begin(), substring.end(), [] (const char& c) { return c == '\"'; }))
>       |                                                                            ^
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:173:3: error: ‘vector’ does not name a type
>   173 |   vector<std::string> split (
>       |   ^~~~~~
> ./core/mrtrix.h:179:10: error: ‘vector’ does not name a type
>   179 |   inline vector<std::string> split_lines (
>       |          ^~~~~~
> ./core/mrtrix.h: In function ‘std::size_t Eigen::is_dash(const string&)’:
> ./core/mrtrix.h:227:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   227 |     size_t nbytes = char_is_dash (arg.c_str());
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘bool Eigen::consume_dash(const char*&)’:
> ./core/mrtrix.h:238:21: error: ‘char_is_dash’ was not declared in this scope; did you mean ‘Eigen::char_is_dash’?
>   238 |     size_t nbytes = char_is_dash (arg);
>       |                     ^~~~~~~~~~~~
>       |                     Eigen::char_is_dash
> ./core/mrtrix.h:205:17: note: ‘Eigen::char_is_dash’ declared here
>   205 |   inline size_t char_is_dash (const char* arg)
>       |                 ^~~~~~~~~~~~
> ./core/mrtrix.h: In function ‘std::string Eigen::str(const T&, int)’:
> ./core/mrtrix.h:252:14: error: ‘max_digits’ was not declared in this scope; did you mean ‘MR::max_digits’?
>   252 |     else if (max_digits<T>::value())
>       |              ^~~~~~~~~~
>       |              MR::max_digits
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:59:12: note: ‘MR::max_digits’ declared here
>    59 |     struct max_digits { NOMEMALIGN
>       |            ^~~~~~~~~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:252:26: error: expected primary-expression before ‘>’ token
>   252 |     else if (max_digits<T>::value())
>       |                          ^
> ./core/mrtrix.h:252:29: error: ‘::value’ has not been declared
>   252 |     else if (max_digits<T>::value())
>       |                             ^~~~~
> ./core/mrtrix.h:253:37: error: expected primary-expression before ‘>’ token
>   253 |       stream.precision (max_digits<T>::value());
>       |                                     ^
> ./core/mrtrix.h:253:40: error: ‘::value’ has not been declared
>   253 |       stream.precision (max_digits<T>::value());
>       |                                        ^~~~~
> ./core/mrtrix.h:256:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   256 |       throw Exception (std::string("error converting type \"") + typeid(T).name() + "\" value to string");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: In function ‘T Eigen::to(const string&)’:
> ./core/mrtrix.h:262:33: error: there are no arguments to ‘strip’ that depend on a template parameter, so a declaration of ‘strip’ must be available [-fpermissive]
>   262 |     const std::string stripped (strip (string));
>       |                                 ^~~~~
> ./core/mrtrix.h:268:37: error: there are no arguments to ‘lowercase’ that depend on a template parameter, so a declaration of ‘lowercase’ must be available [-fpermissive]
>   268 |         const std::string lstring = lowercase (stripped);
>       |                                     ^~~~~~~~~
> ./core/mrtrix.h:278:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   278 |       throw Exception ("error converting string \"" + string + "\" to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h:280:13: error: there are no arguments to ‘Exception’ that depend on a template parameter, so a declaration of ‘Exception’ must be available [-fpermissive]
>   280 |       throw Exception ("incomplete use of string \"" + string + "\" in conversion to type \"" + typeid(T).name() + "\"");
>       |             ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:285:29: error: expected initializer before ‘<’ token
>   285 |   template <> inline bool to<bool> (const std::string& string)
>       |                             ^
> ./core/mrtrix.h:295:37: error: expected initializer before ‘<’ token
>   295 |   template <> inline std::string str<cfloat> (const cfloat& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:308:22: error: ‘cfloat’ does not name a type
>   308 |   template <> inline cfloat to<cfloat> (const std::string& string)
>       |                      ^~~~~~
> ./core/mrtrix.h:353:37: error: expected initializer before ‘<’ token
>   353 |   template <> inline std::string str<cdouble> (const cdouble& value, int precision)
>       |                                     ^
> ./core/mrtrix.h:366:22: error: ‘cdouble’ does not name a type
>   366 |   template <> inline cdouble to<cdouble> (const std::string& string)
>       |                      ^~~~~~~
> ./core/mrtrix.h:417:3: error: ‘vector’ does not name a type
>   417 |   vector<default_type> parse_floats (const std::string& spec);
>       |   ^~~~~~
> ./core/mrtrix.h:422:3: error: ‘vector’ does not name a type
>   422 |   vector<IntType> parse_ints (const std::string& spec, const IntType last = std::numeric_limits<IntType>::max())
>       |   ^~~~~~
> ./core/mrtrix.h:498:34: error: ‘vector’ does not name a type
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:498:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   498 |   inline std::string join (const vector<std::string>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:501:9: error: ‘V’ was not declared in this scope
>   501 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:503:11: error: ‘V’ was not declared in this scope
>   503 |     ret = V[0];
>       |           ^
> ./core/mrtrix.h:504:10: error: ‘vector’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |          ^~~~~~
> ./core/mrtrix.h:504:10: note: suggested alternatives:
> In file included from /usr/include/c++/11/vector:67,
>                  from ./core/types.h:27,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_vector.h:389:11: note:   ‘std::vector’
>   389 |     class vector : protected _Vector_base<_Tp, _Alloc>
>       |           ^~~~~~
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:253:11: note:   ‘MR::vector’
>   253 |     class vector : public ::std::vector<X, Eigen::aligned_allocator<X>> { NOMEMALIGN
>       |           ^~~~~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:504:28: error: expected primary-expression before ‘>’ token
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                            ^
> ./core/mrtrix.h:504:31: error: ‘::const_iterator’ has not been declared
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                               ^~~~~~~~~~~~~~
> ./core/mrtrix.h:504:64: error: ‘i’ was not declared in this scope
>   504 |     for (vector<std::string>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                                ^
> ./core/mrtrix.h:505:14: error: ‘delimiter’ was not declared in this scope
>   505 |       ret += delimiter + *i;
>       |              ^~~~~~~~~
> ./core/mrtrix.h: At global scope:
> ./core/mrtrix.h:510:34: error: ‘vector’ does not name a type
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                  ^~~~~~
> ./core/mrtrix.h:510:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>   510 |   inline std::string join (const vector<T>& V, const std::string& delimiter)
>       |                                        ^
> ./core/mrtrix.h: In function ‘std::string Eigen::join(int)’:
> ./core/mrtrix.h:513:9: error: ‘V’ was not declared in this scope
>   513 |     if (V.empty())
>       |         ^
> ./core/mrtrix.h:515:15: error: ‘V’ was not declared in this scope
>   515 |     ret = str(V[0]);
>       |               ^
> ./core/mrtrix.h:515:11: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   515 |     ret = str(V[0]);
>       |           ^~~
> ./core/mrtrix.h:516:25: error: expected ‘;’ before ‘<’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                         ^
>       |                         ;
> ./core/mrtrix.h:516:25: error: expected primary-expression before ‘<’ token
> ./core/mrtrix.h:516:27: error: expected primary-expression before ‘>’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                           ^
> ./core/mrtrix.h:516:30: error: ‘::const_iterator’ has not been declared
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                              ^~~~~~~~~~~~~~
> ./core/mrtrix.h:516:44: error: expected ‘;’ before ‘i’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                            ^~
>       |                                            ;
> ./core/mrtrix.h:516:45: error: ‘i’ was not declared in this scope
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                             ^
> ./core/mrtrix.h:516:61: error: expected ‘)’ before ‘;’ token
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |         ~                                                   ^
>       |                                                             )
> ./core/mrtrix.h:516:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |     ^~~
> ./core/mrtrix.h:516:63: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
>   516 |     for (typename vector<T>::const_iterator i = V.begin() +1; i != V.end(); ++i)
>       |                                                               ^
> ./core/mrtrix.h:516:63: error: ‘i’ was not declared in this scope
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::exists(const string&)’:
> ./core/file/path.h:99:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    99 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::is_dir(const string&)’:
> ./core/file/path.h:115:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   115 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::is_file(const string&)’:
> ./core/file/path.h:125:13: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   125 |       throw Exception (strerror (errno));
>       |             ^~~~~~~~~
>       |             MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)’:
> ./core/file/path.h:140:57: error: definition of ‘auto Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, const std::initializer_list<const std::__cxx11::basic_string<char> >&)::<lambda>’ [-fpermissive]
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:140:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   140 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:136:17: note: ‘Eigen::has_suffix’ declared here
>   136 |     inline bool has_suffix (const std::string &name, const std::initializer_list<const std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: At global scope:
> ./core/file/path.h:143:60: error: ‘vector’ does not name a type
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                            ^~~~~~
> ./core/file/path.h:143:66: error: expected ‘,’ or ‘...’ before ‘<’ token
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                                                                  ^
> ./core/file/path.h: In function ‘bool Eigen::has_suffix(const string&, int)’:
> ./core/file/path.h:145:27: error: ‘suffix_list’ was not declared in this scope
>   145 |       return std::any_of (suffix_list.begin(),
>       |                           ^~~~~~~~~~~
> ./core/file/path.h:147:57: error: definition of ‘auto Eigen::has_suffix(const string&, int)::<lambda>::operator()(const string&) const’ is not in namespace enclosing ‘Eigen::has_suffix(const string&, int)::<lambda>’ [-fpermissive]
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                         ^
> ./core/file/path.h: In lambda function:
> ./core/file/path.h:147:68: error: ‘has_suffix’ was not declared in this scope; did you mean ‘Eigen::has_suffix’?
>   147 |                           [&] (const std::string& suffix) { return has_suffix (name, suffix); });
>       |                                                                    ^~~~~~~~~~
>       |                                                                    Eigen::has_suffix
> ./core/file/path.h:143:17: note: ‘Eigen::has_suffix’ declared here
>   143 |     inline bool has_suffix (const std::string &name, const vector<std::string> &suffix_list)
>       |                 ^~~~~~~~~~
> ./core/file/path.h: In function ‘bool Eigen::is_mrtrix_image(const string&)’:
> ./core/file/path.h:153:9: error: ‘Path’ has not been declared
>   153 |         Path::has_suffix (name, {".mif", ".mih", ".mif.gz"});
>       |         ^~~~
> ./core/file/path.h: In function ‘std::string Eigen::cwd()’:
> ./core/file/path.h:165:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   165 |           throw Exception ("failed to get current working directory!");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘std::string Eigen::home()’:
> ./core/file/path.h:175:15: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   175 |         throw Exception (HOME_ENV " environment variable is not set!");
>       |               ^~~~~~~~~
>       |               MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In constructor ‘MR::Path::Dir::Dir(const string&)’:
> ./core/file/path.h:184:19: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   184 |             throw Exception ("error opening folder " + name + ": " + strerror (errno));
>       |                   ^~~~~~~~~
>       |                   MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:17:
> ./core/file/path.h: In function ‘char Eigen::delimiter(const string&)’:
> ./core/file/path.h:216:11: error: ‘Path’ has not been declared
>   216 |       if (Path::has_suffix (filename, ".tsv"))
>       |           ^~~~
> ./core/file/path.h:218:16: error: ‘Path’ has not been declared
>   218 |       else if (Path::has_suffix (filename, ".csv"))
>       |                ^~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h: At global scope:
> /usr/include/c++/11/bits/hashtable_policy.h:108:33: error: ‘_Hashtable_alloc’ does not name a type
>   108 |       using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>;
>       |                                 ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:110:18: error: ‘__hashtable_alloc’ has not been declared
>   110 |         typename __hashtable_alloc::__node_alloc_traits;
>       |                  ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:111:36: error: ‘__hashtable_alloc’ has not been declared
>   111 |       using __node_type = typename __hashtable_alloc::__node_type;
>       |                                    ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:114:36: error: expected ‘)’ before ‘*’ token
>   114 |       _ReuseOrAllocNode(__node_type* __nodes, __hashtable_alloc& __h)
>       |                        ~           ^
>       |                                    )
> /usr/include/c++/11/bits/hashtable_policy.h:122:9: error: ‘__node_type’ does not name a type; did you mean ‘__true_type’?
>   122 |         __node_type*
>       |         ^~~~~~~~~~~
>       |         __true_type
> /usr/include/c++/11/bits/hashtable_policy.h:148:15: error: ‘__node_type’ does not name a type; did you mean ‘__true_type’?
>   148 |       mutable __node_type* _M_nodes;
>       |               ^~~~~~~~~~~
>       |               __true_type
> /usr/include/c++/11/bits/hashtable_policy.h:149:7: error: ‘__hashtable_alloc’ does not name a type; did you mean ‘_Hashtable_alloc’?
>   149 |       __hashtable_alloc& _M_h;
>       |       ^~~~~~~~~~~~~~~~~
>       |       _Hashtable_alloc
> /usr/include/c++/11/bits/hashtable_policy.h: In destructor ‘std::__detail::_ReuseOrAllocNode<_NodeAlloc>::~_ReuseOrAllocNode()’:
> /usr/include/c++/11/bits/hashtable_policy.h:119:9: error: ‘_M_h’ was not declared in this scope
>   119 |       { _M_h._M_deallocate_nodes(_M_nodes); }
>       |         ^~~~
> /usr/include/c++/11/bits/hashtable_policy.h:119:34: error: ‘_M_nodes’ was not declared in this scope
>   119 |       { _M_h._M_deallocate_nodes(_M_nodes); }
>       |                                  ^~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h: At global scope:
> /usr/include/c++/11/bits/hashtable_policy.h:158:33: error: ‘_Hashtable_alloc’ does not name a type
>   158 |       using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>;
>       |                                 ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:159:36: error: ‘__hashtable_alloc’ has not been declared
>   159 |       using __node_type = typename __hashtable_alloc::__node_type;
>       |                                    ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:162:35: error: expected ‘)’ before ‘&’ token
>   162 |       _AllocNode(__hashtable_alloc& __h)
>       |                 ~                 ^
>       |                                   )
> /usr/include/c++/11/bits/hashtable_policy.h:166:9: error: ‘__node_type’ does not name a type; did you mean ‘__true_type’?
>   166 |         __node_type*
>       |         ^~~~~~~~~~~
>       |         __true_type
> /usr/include/c++/11/bits/hashtable_policy.h:171:7: error: ‘__hashtable_alloc’ does not name a type; did you mean ‘_Hashtable_alloc’?
>   171 |       __hashtable_alloc& _M_h;
>       |       ^~~~~~~~~~~~~~~~~
>       |       _Hashtable_alloc
> /usr/include/c++/11/bits/hashtable_policy.h:202:29: error: ‘__bool_constant’ does not name a type
>   202 |       using __hash_cached = __bool_constant<_Cache_hash_code>;
>       |                             ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:203:36: error: ‘__bool_constant’ does not name a type
>   203 |       using __constant_iterators = __bool_constant<_Constant_iterators>;
>       |                                    ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:204:29: error: ‘__bool_constant’ does not name a type
>   204 |       using __unique_keys = __bool_constant<_Unique_keys>;
>       |                             ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:264:12: error: ‘_Hash_node_code_cache’ is not a class template
>   264 |     struct _Hash_node_code_cache<true>
>       |            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:264:38: error: template specifiers not specified in declaration of ‘template<bool _Cache_hash_code> struct std::__detail::_Hash_node_code_cache’
>   264 |     struct _Hash_node_code_cache<true>
>       |                                      ^
> /usr/include/c++/11/bits/hashtable_policy.h:269:28: error: expected template-name before ‘<’ token
>   269 |     : _Hash_node_value_base<_Value>
>       |                            ^
> /usr/include/c++/11/bits/hashtable_policy.h:269:28: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:279:5: error: expected class-name before ‘,’ token
>   279 |     , _Hash_node_value<_Value, _Cache_hash_code>
>       |     ^
> /usr/include/c++/11/bits/hashtable_policy.h:279:23: error: expected template-name before ‘<’ token
>   279 |     , _Hash_node_value<_Value, _Cache_hash_code>
>       |                       ^
> /usr/include/c++/11/bits/hashtable_policy.h:279:23: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:290:27: error: ‘_Hash_node’ does not name a type
>   290 |       using __node_type = _Hash_node<_Value, _Cache_hash_code>;
>       |                           ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:292:7: error: ‘__node_type’ does not name a type; did you mean ‘__true_type’?
>   292 |       __node_type* _M_cur;
>       |       ^~~~~~~~~~~
>       |       __true_type
> /usr/include/c++/11/bits/hashtable_policy.h:295:38: error: expected ‘)’ before ‘*’ token
>   295 |       _Node_iterator_base(__node_type* __p) noexcept
>       |                          ~           ^
>       |                                      )
> /usr/include/c++/11/bits/hashtable_policy.h: In constructor ‘std::__detail::_Node_iterator_base<_Value, _Cache_hash_code>::_Node_iterator_base()’:
> /usr/include/c++/11/bits/hashtable_policy.h:294:31: error: class ‘std::__detail::_Node_iterator_base<_Value, _Cache_hash_code>’ does not have any field named ‘_M_cur’
>   294 |       _Node_iterator_base() : _M_cur(nullptr) { }
>       |                               ^~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h: In member function ‘void std::__detail::_Node_iterator_base<_Value, _Cache_hash_code>::_M_incr()’:
> /usr/include/c++/11/bits/hashtable_policy.h:300:9: error: ‘_M_cur’ was not declared in this scope; did you mean ‘_S_cur’?
>   300 |       { _M_cur = _M_cur->_M_next(); }
>       |         ^~~~~~
>       |         _S_cur
> /usr/include/c++/11/bits/hashtable_policy.h: At global scope:
> /usr/include/c++/11/bits/hashtable_policy.h:318:33: error: expected template-name before ‘<’ token
>   318 |     : public _Node_iterator_base<_Value, __cache>
>       |                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:318:33: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:368:33: error: expected template-name before ‘<’ token
>   368 |     : public _Node_iterator_base<_Value, __cache>
>       |                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:368:33: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:444:31: error: ‘true_type’ does not name a type
>   444 |     using __has_load_factor = true_type;
>       |                               ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:522:31: error: ‘true_type’ does not name a type
>   522 |     using __has_load_factor = true_type;
>       |                               ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h: In member function ‘std::size_t std::__detail::_Power2_rehash_policy::_M_next_bkt(std::size_t)’:
> /usr/include/c++/11/bits/hashtable_policy.h:544:27: error: ‘__clp2’ was not declared in this scope; did you mean ‘Eigen::__clp2’?
>   544 |       std::size_t __res = __clp2(__n);
>       |                           ^~~~~~
>       |                           Eigen::__clp2
> /usr/include/c++/11/bits/hashtable_policy.h:505:3: note: ‘Eigen::__clp2’ declared here
>   505 |   __clp2(std::size_t __n) noexcept
>       |   ^~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h: At global scope:
> /usr/include/c++/11/bits/hashtable_policy.h:649:12: error: ‘_Map_base’ is not a class template
>   649 |     struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:649:43: error: ‘_Select1st’ was not declared in this scope
>   649 |     struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |                                           ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:649:43: note: suggested alternatives:
> In file included from /usr/include/c++/11/string:48,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_function.h:1166:12: note:   ‘std::_Select1st’
>  1166 |     struct _Select1st
>       |            ^~~~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:89:10: note:   ‘std::__detail::_Select1st’
>    89 |   struct _Select1st
>       |          ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:650:79: error: redeclared with 9 template parameters
>   650 |                      _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false>
>       |                                                                               ^
> /usr/include/c++/11/bits/hashtable_policy.h:643:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Unique_keys> struct std::__detail::_Map_base’ used 11 template parameters
>   643 |     struct _Map_base { };
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:659:12: error: ‘_Map_base’ is not a class template
>   659 |     struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:659:43: error: ‘_Select1st’ was not declared in this scope
>   659 |     struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |                                           ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:659:43: note: suggested alternatives:
> In file included from /usr/include/c++/11/string:48,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_function.h:1166:12: note:   ‘std::_Select1st’
>  1166 |     struct _Select1st
>       |            ^~~~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:89:10: note:   ‘std::__detail::_Select1st’
>    89 |   struct _Select1st
>       |          ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:660:78: error: redeclared with 9 template parameters
>   660 |                      _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>
>       |                                                                              ^
> /usr/include/c++/11/bits/hashtable_policy.h:643:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Unique_keys> struct std::__detail::_Map_base’ used 11 template parameters
>   643 |     struct _Map_base { };
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:696:14: error: expected initializer before ‘<’ token
>   696 |     _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:723:14: error: expected initializer before ‘<’ token
>   723 |     _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:750:14: error: expected initializer before ‘<’ token
>   750 |     _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:767:14: error: expected initializer before ‘<’ token
>   767 |     _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:792:32: error: ‘_Hashtable_base’ does not name a type
>   792 |       using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey,
>       |                                ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:796:27: error: ‘_Hashtable’ does not name a type
>   796 |       using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |                           ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:803:33: error: ‘_Hashtable_alloc’ does not name a type
>   803 |       using __hashtable_alloc = _Hashtable_alloc<
>       |                                 ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:807:35: error: ‘__hashtable_base’ has not been declared
>   807 |       using value_type = typename __hashtable_base::value_type;
>       |                                   ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:808:34: error: ‘__hashtable_base’ has not been declared
>   808 |       using size_type = typename __hashtable_base::size_type;
>       |                                  ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:811:42: error: ‘__hashtable_alloc’ has not been declared
>   811 |       using __node_alloc_type = typename __hashtable_alloc::__node_alloc_type;
>       |                                          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:812:31: error: ‘_AllocNode’ does not name a type
>   812 |       using __node_gen_type = _AllocNode<__node_alloc_type>;
>       |                               ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:814:7: error: ‘__hashtable’ does not name a type; did you mean ‘_Hashtable’?
>   814 |       __hashtable&
>       |       ^~~~~~~~~~~
>       |       _Hashtable
> /usr/include/c++/11/bits/hashtable_policy.h:821:45: error: ‘true_type’ has not been declared
>   821 |                         const _NodeGetter&, true_type __uks);
>       |                                             ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:826:45: error: ‘false_type’ has not been declared
>   826 |                         const _NodeGetter&, false_type __uks);
>       |                                             ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:825:9: error: ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits> template<class _InputIterator, class _NodeGetter> void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&, int)’ cannot be overloaded with ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits> template<class _InputIterator, class _NodeGetter> void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&, int)’
>   825 |         _M_insert_range(_InputIterator __first, _InputIterator __last,
>       |         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:820:9: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits> template<class _InputIterator, class _NodeGetter> void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&, int)’
>   820 |         _M_insert_range(_InputIterator __first, _InputIterator __last,
>       |         ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:829:24: error: ‘_Node_iterator’ does not name a type
>   829 |       using iterator = _Node_iterator<_Value, __constant_iterators::value,
>       |                        ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:832:30: error: ‘_Node_const_iterator’ does not name a type
>   832 |       using const_iterator = _Node_const_iterator<_Value, __constant_iterators::value,
>       |                              ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:836:64: error: ‘iterator’ was not declared in this scope; did you mean ‘std::iterator’?
>   836 |                                                      std::pair<iterator, bool>,
>       |                                                                ^~~~~~~~
>       |                                                                std::iterator
> In file included from /usr/include/c++/11/bits/stl_algobase.h:65,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_types.h:127:12: note: ‘std::iterator’ declared here
>   127 |     struct iterator
>       |            ^~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:836:78: error: template argument 1 is invalid
>   836 |                                                      std::pair<iterator, bool>,
>       |                                                                              ^
> /usr/include/c++/11/bits/hashtable_policy.h:837:54: error: ‘iterator’ was not declared in this scope; did you mean ‘std::iterator’?
>   837 |                                                      iterator>::type;
>       |                                                      ^~~~~~~~
>       |                                                      std::iterator
> In file included from /usr/include/c++/11/bits/stl_algobase.h:65,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_types.h:127:12: note: ‘std::iterator’ declared here
>   127 |     struct iterator
>       |            ^~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:837:62: error: template argument 2 is invalid
>   837 |                                                      iterator>::type;
>       |                                                              ^
> /usr/include/c++/11/bits/hashtable_policy.h:837:62: error: template argument 3 is invalid
> /usr/include/c++/11/bits/hashtable_policy.h:837:63: error: ‘<declaration error>’ is not a template [-fpermissive]
>   837 |                                                      iterator>::type;
>       |                                                               ^~
> /usr/include/c++/11/bits/hashtable_policy.h:839:7: error: ‘__ireturn_type’ does not name a type; did you mean ‘__truth_type’?
>   839 |       __ireturn_type
>       |       ^~~~~~~~~~~~~~
>       |       __truth_type
> /usr/include/c++/11/bits/hashtable_policy.h:847:7: error: ‘iterator’ does not name a type
>   847 |       iterator
>       |       ^~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:856:19: error: ‘iterator’ was not declared in this scope; did you mean ‘std::iterator’?
>   856 |         std::pair<iterator, bool>
>       |                   ^~~~~~~~
>       |                   std::iterator
> In file included from /usr/include/c++/11/bits/stl_algobase.h:65,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_types.h:127:12: note: ‘std::iterator’ declared here
>   127 |     struct iterator
>       |            ^~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:856:33: error: template argument 1 is invalid
>   856 |         std::pair<iterator, bool>
>       |                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:857:21: error: ‘const_iterator’ has not been declared
>   857 |         try_emplace(const_iterator, _KType&& __k, _Args&&... __args)
>       |                     ^~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:878:14: error: ‘initializer_list’ has not been declared
>   878 |       insert(initializer_list<value_type> __l)
>       |              ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:878:30: error: expected ‘,’ or ‘...’ before ‘<’ token
>   878 |       insert(initializer_list<value_type> __l)
>       |                              ^
> /usr/include/c++/11/bits/hashtable_policy.h: In member function ‘int std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::try_emplace(int, _KType&&, _Args&& ...)’:
> /usr/include/c++/11/bits/hashtable_policy.h:859:11: error: ‘__hashtable’ was not declared in this scope; did you mean ‘_Hashtable’?
>   859 |           __hashtable& __h = _M_conjure_hashtable();
>       |           ^~~~~~~~~~~
>       |           _Hashtable
> /usr/include/c++/11/bits/hashtable_policy.h:859:24: error: ‘__h’ was not declared in this scope; did you mean ‘__k’?
>   859 |           __hashtable& __h = _M_conjure_hashtable();
>       |                        ^~~
>       |                        __k
> /usr/include/c++/11/bits/hashtable_policy.h:859:30: error: there are no arguments to ‘_M_conjure_hashtable’ that depend on a template parameter, so a declaration of ‘_M_conjure_hashtable’ must be available [-fpermissive]
>   859 |           __hashtable& __h = _M_conjure_hashtable();
>       |                              ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:863:22: error: there are no arguments to ‘iterator’ that depend on a template parameter, so a declaration of ‘iterator’ must be available [-fpermissive]
>   863 |             return { iterator(__node), false };
>       |                      ^~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:865:20: error: ‘__hashtable’ is not a class, namespace, or enumeration
>   865 |           typename __hashtable::_Scoped_node __node {
>       |                    ^~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:865:46: error: expected ‘(’ before ‘__node’
>   865 |           typename __hashtable::_Scoped_node __node {
>       |                                              ^~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:872:56: error: ‘__node’ was not declared in this scope; did you mean ‘__not_’?
>   872 |             = __h._M_insert_unique_node(__bkt, __code, __node._M_node);
>       |                                                        ^~~~~~
>       |                                                        __not_
> /usr/include/c++/11/bits/hashtable_policy.h:874:31: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’ in return
>   874 |           return { __it, true };
>       |                               ^
> /usr/include/c++/11/bits/hashtable_policy.h: In member function ‘void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::insert(int)’:
> /usr/include/c++/11/bits/hashtable_policy.h:879:22: error: ‘__l’ was not declared in this scope; did you mean ‘__lg’?
>   879 |       { this->insert(__l.begin(), __l.end()); }
>       |                      ^~~
>       |                      __lg
> /usr/include/c++/11/bits/hashtable_policy.h: In member function ‘void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::insert(_InputIterator, _InputIterator)’:
> /usr/include/c++/11/bits/hashtable_policy.h:885:11: error: ‘__hashtable’ was not declared in this scope; did you mean ‘_Hashtable’?
>   885 |           __hashtable& __h = _M_conjure_hashtable();
>       |           ^~~~~~~~~~~
>       |           _Hashtable
> /usr/include/c++/11/bits/hashtable_policy.h:885:24: error: ‘__h’ was not declared in this scope
>   885 |           __hashtable& __h = _M_conjure_hashtable();
>       |                        ^~~
> /usr/include/c++/11/bits/hashtable_policy.h:885:30: error: there are no arguments to ‘_M_conjure_hashtable’ that depend on a template parameter, so a declaration of ‘_M_conjure_hashtable’ must be available [-fpermissive]
>   885 |           __hashtable& __h = _M_conjure_hashtable();
>       |                              ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:886:11: error: ‘__node_gen_type’ was not declared in this scope
>   886 |           __node_gen_type __node_gen(__h);
>       |           ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:887:51: error: ‘__node_gen’ was not declared in this scope; did you mean ‘__mode_t’?
>   887 |           return _M_insert_range(__first, __last, __node_gen, __unique_keys{});
>       |                                                   ^~~~~~~~~~
>       |                                                   __mode_t
> /usr/include/c++/11/bits/hashtable_policy.h: At global scope:
> /usr/include/c++/11/bits/hashtable_policy.h:897:7: error: too many template-parameter-lists
>   897 |       _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:914:7: error: too many template-parameter-lists
>   914 |       _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:960:12: error: ‘_Insert’ is not a class template
>   960 |     struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:962:48: error: redeclared with 10 template parameters
>   962 |                    _RehashPolicy, _Traits, true>
>       |                                                ^
> /usr/include/c++/11/bits/hashtable_policy.h:953:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Constant_iterators> struct std::__detail::_Insert’ used 11 template parameters
>   953 |     struct _Insert;
>       |            ^~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:963:26: error: expected template-name before ‘<’ token
>   963 |     : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |                          ^
> /usr/include/c++/11/bits/hashtable_policy.h:1004:12: error: ‘_Insert’ is not a class template
>  1004 |     struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1005:77: error: redeclared with 10 template parameters
>  1005 |                    _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false>
>       |                                                                             ^
> /usr/include/c++/11/bits/hashtable_policy.h:953:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Constant_iterators> struct std::__detail::_Insert’ used 11 template parameters
>   953 |     struct _Insert;
>       |            ^~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1006:26: error: expected template-name before ‘<’ token
>  1006 |     : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |                          ^
> /usr/include/c++/11/bits/hashtable_policy.h:1063:14: error: ‘__detected_or_t’ does not name a type
>  1063 |              __detected_or_t<false_type, __has_load_factor, _RehashPolicy>>
>       |              ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1063:29: error: expected ‘>’ before ‘<’ token
>  1063 |              __detected_or_t<false_type, __has_load_factor, _RehashPolicy>>
>       |                             ^
> /usr/include/c++/11/bits/hashtable_policy.h:1071:12: error: ‘_Rehash_base’ is not a class template
>  1071 |     struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1073:25: error: ‘false_type’ was not declared in this scope
>  1073 |                         false_type /* Has load factor */>
>       |                         ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1073:25: note: suggested alternatives:
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/type_traits:86:9: note:   ‘std::false_type’
>    86 |   using false_type = integral_constant<bool, false>;
>       |         ^~~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:97:8: note:   ‘Eigen::internal::false_type’
>    97 | struct false_type { enum { value = 0 }; };
>       |        ^~~~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:1073:57: error: redeclared with 10 template parameters
>  1073 |                         false_type /* Has load factor */>
>       |                                                         ^
> /usr/include/c++/11/bits/hashtable_policy.h:1064:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, class> struct std::__detail::_Rehash_base’ used 11 template parameters
>  1064 |     struct _Rehash_base;
>       |            ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1082:12: error: ‘_Rehash_base’ is not a class template
>  1082 |     struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1084:25: error: ‘true_type’ was not declared in this scope
>  1084 |                         true_type /* Has load factor */>
>       |                         ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1084:25: note: suggested alternatives:
> In file included from /usr/include/c++/11/bits/move.h:57,
>                  from /usr/include/c++/11/bits/stl_pair.h:59,
>                  from /usr/include/c++/11/bits/stl_algobase.h:64,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/type_traits:83:9: note:   ‘std::true_type’
>    83 |   using true_type =  integral_constant<bool, true>;
>       |         ^~~~~~~~~
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:96:8: note:   ‘Eigen::internal::true_type’
>    96 | struct true_type {  enum { value = 1 }; };
>       |        ^~~~~~~~~
> In file included from /usr/include/c++/11/bits/hashtable.h:35,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable_policy.h:1084:56: error: redeclared with 10 template parameters
>  1084 |                         true_type /* Has load factor */>
>       |                                                        ^
> /usr/include/c++/11/bits/hashtable_policy.h:1064:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, class> struct std::__detail::_Rehash_base’ used 11 template parameters
>  1064 |     struct _Rehash_base;
>       |            ^~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1124:12: error: ‘_Hashtable_ebo_helper’ is not a class template
>  1124 |     struct _Hashtable_ebo_helper<_Nm, _Tp, true>
>       |            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1124:48: error: redeclared with 2 template parameters
>  1124 |     struct _Hashtable_ebo_helper<_Nm, _Tp, true>
>       |                                                ^
> /usr/include/c++/11/bits/hashtable_policy.h:1120:12: note: previous declaration ‘template<int _Nm, class _Tp, bool __use_ebo> struct std::__detail::_Hashtable_ebo_helper’ used 3 template parameters
>  1120 |     struct _Hashtable_ebo_helper;
>       |            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1140:12: error: ‘_Hashtable_ebo_helper’ is not a class template
>  1140 |     struct _Hashtable_ebo_helper<_Nm, _Tp, false>
>       |            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1140:49: error: redeclared with 2 template parameters
>  1140 |     struct _Hashtable_ebo_helper<_Nm, _Tp, false>
>       |                                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:1120:12: note: previous declaration ‘template<int _Nm, class _Tp, bool __use_ebo> struct std::__detail::_Hashtable_ebo_helper’ used 3 template parameters
>  1120 |     struct _Hashtable_ebo_helper;
>       |            ^~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1189:36: error: expected template-name before ‘<’ token
>  1189 |     : private _Hashtable_ebo_helper<1, _Hash>
>       |                                    ^
> /usr/include/c++/11/bits/hashtable_policy.h:1189:36: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:1282:12: error: ‘_Local_iterator_base’ is not a class template
>  1282 |     struct _Local_iterator_base<_Key, _Value, _ExtractKey,
>       |            ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1283:65: error: redeclared with 6 template parameters
>  1283 |                                 _Hash, _RangeHash, _Unused, true>
>       |                                                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:1165:12: note: previous declaration ‘template<class _Key, class _Value, class _ExtractKey, class _Hash, class _RangeHash, class _Unused, bool __cache_hash_code> struct std::__detail::_Local_iterator_base’ used 7 template parameters
>  1165 |     struct _Local_iterator_base;
>       |            ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1284:33: error: expected template-name before ‘<’ token
>  1284 |     : public _Node_iterator_base<_Value, true>
>       |                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:1337:12: error: ‘_Hash_code_storage’ is not a class template
>  1337 |     struct _Hash_code_storage<_Tp, true>
>       |            ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1337:40: error: redeclared with 1 template parameter
>  1337 |     struct _Hash_code_storage<_Tp, true>
>       |                                        ^
> /usr/include/c++/11/bits/hashtable_policy.h:1324:12: note: previous declaration ‘template<class _Tp, bool _IsEmpty> struct std::__detail::_Hash_code_storage’ used 2 template parameters
>  1324 |     struct _Hash_code_storage
>       |            ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1353:9: error: ‘_Hash_code_storage’ does not name a type
>  1353 |       = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey,
>       |         ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1359:12: error: ‘_Local_iterator_base’ is not a class template
>  1359 |     struct _Local_iterator_base<_Key, _Value, _ExtractKey,
>       |            ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1360:66: error: redeclared with 6 template parameters
>  1360 |                                 _Hash, _RangeHash, _Unused, false>
>       |                                                                  ^
> /usr/include/c++/11/bits/hashtable_policy.h:1165:12: note: previous declaration ‘template<class _Key, class _Value, class _ExtractKey, class _Hash, class _RangeHash, class _Unused, bool __cache_hash_code> struct std::__detail::_Local_iterator_base’ used 7 template parameters
>  1165 |     struct _Local_iterator_base;
>       |            ^~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1361:33: error: expected template-name before ‘<’ token
>  1361 |     : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _Hash, _RangeHash,
>       |                                 ^
> /usr/include/c++/11/bits/hashtable_policy.h:1438:34: error: expected template-name before ‘<’ token
>  1438 |     : public _Local_iterator_base<_Key, _Value, _ExtractKey,
>       |                                  ^
> /usr/include/c++/11/bits/hashtable_policy.h:1438:34: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:1494:34: error: expected template-name before ‘<’ token
>  1494 |     : public _Local_iterator_base<_Key, _Value, _ExtractKey,
>       |                                  ^
> /usr/include/c++/11/bits/hashtable_policy.h:1494:34: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:1562:29: error: expected template-name before ‘<’ token
>  1562 |     : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash,
>       |                             ^
> /usr/include/c++/11/bits/hashtable_policy.h:1562:29: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:1673:12: error: ‘_Equality’ is not a class template
>  1673 |     struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1674:78: error: redeclared with 10 template parameters
>  1674 |                      _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>
>       |                                                                              ^
> /usr/include/c++/11/bits/hashtable_policy.h:1666:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Unique_keys> struct std::__detail::_Equality’ used 11 template parameters
>  1666 |     struct _Equality;
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1689:14: error: expected initializer before ‘<’ token
>  1689 |     _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:1725:12: error: ‘_Equality’ is not a class template
>  1725 |     struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1726:79: error: redeclared with 10 template parameters
>  1726 |                      _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false>
>       |                                                                               ^
> /usr/include/c++/11/bits/hashtable_policy.h:1666:12: note: previous declaration ‘template<class _Key, class _Value, class _Alloc, class _ExtractKey, class _Equal, class _Hash, class _RangeHash, class _Unused, class _RehashPolicy, class _Traits, bool _Unique_keys> struct std::__detail::_Equality’ used 11 template parameters
>  1666 |     struct _Equality;
>       |            ^~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1741:14: error: expected initializer before ‘<’ token
>  1741 |     _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |              ^
> /usr/include/c++/11/bits/hashtable_policy.h:1802:60: error: expected template-name before ‘<’ token
>  1802 |     struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc>
>       |                                                            ^
> /usr/include/c++/11/bits/hashtable_policy.h:1802:60: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/hashtable_policy.h:1870:7: error: too many template-parameter-lists
>  1870 |       _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args)
>       |       ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable_policy.h:1892:21: error: expected initializer before ‘<’ token
>  1892 |     _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n)
>       |                     ^
> /usr/include/c++/11/bits/hashtable_policy.h:1900:21: error: expected initializer before ‘<’ token
>  1900 |     _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n)
>       |                     ^
> /usr/include/c++/11/bits/hashtable_policy.h:1910:21: error: expected initializer before ‘<’ token
>  1910 |     _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n)
>       |                     ^
> /usr/include/c++/11/bits/hashtable_policy.h:1922:21: error: expected initializer before ‘<’ token
>  1922 |     _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __bkt_count)
>       |                     ^
> /usr/include/c++/11/bits/hashtable_policy.h:1935:21: error: expected initializer before ‘<’ token
>  1935 |     _Hashtable_alloc<_NodeAlloc>::
>       |                     ^
> In file included from /usr/include/c++/11/bits/hashtable.h:36,
>                  from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/enable_special_members.h:66:15: error: only declarations of constructors and conversion operators can be ‘explicit’
>    66 |     constexpr explicit
>       |               ^~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:66:5: error: non-static data member ‘_Enable_default_constructor_tag’ declared ‘constexpr’
>    66 |     constexpr explicit
>       |     ^~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:67:68: error: expected ‘;’ at end of member declaration
>    67 |     _Enable_default_constructor(_Enable_default_constructor_tag) { }
>       |                                                                    ^
>       |                                                                     ;
> /usr/include/c++/11/bits/enable_special_members.h:101:40: error: expected template-name before ‘<’ token
>   101 |   : private _Enable_default_constructor<_Default, _Tag>,
>       |                                        ^
> /usr/include/c++/11/bits/enable_special_members.h:101:40: error: expected ‘{’ before ‘<’ token
> /usr/include/c++/11/bits/enable_special_members.h:111:10: error: ‘_Enable_default_constructor’ is not a class template
>   111 |   struct _Enable_default_constructor<false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:111:49: error: redeclared with 1 template parameter
>   111 |   struct _Enable_default_constructor<false, _Tag>
>       |                                                 ^
> /usr/include/c++/11/bits/enable_special_members.h:53:10: note: previous declaration ‘template<bool _Switch, class _Tag> struct std::_Enable_default_constructor’ used 2 template parameters
>    53 |   struct _Enable_default_constructor
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:129:10: error: ‘_Enable_destructor’ is not a class template
>   129 |   struct _Enable_destructor<false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:129:40: error: redeclared with 1 template parameter
>   129 |   struct _Enable_destructor<false, _Tag>
>       |                                        ^
> /usr/include/c++/11/bits/enable_special_members.h:77:10: note: previous declaration ‘template<bool _Switch, class _Tag> struct std::_Enable_destructor’ used 2 template parameters
>    77 |   struct _Enable_destructor { };
>       |          ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:133:10: error: ‘_Enable_copy_move’ is not a class template
>   133 |   struct _Enable_copy_move<false, true, true, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:133:57: error: redeclared with 1 template parameter
>   133 |   struct _Enable_copy_move<false, true, true, true, _Tag>
>       |                                                         ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:145:10: error: ‘_Enable_copy_move’ is not a class template
>   145 |   struct _Enable_copy_move<true, false, true, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:145:57: error: redeclared with 1 template parameter
>   145 |   struct _Enable_copy_move<true, false, true, true, _Tag>
>       |                                                         ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:157:10: error: ‘_Enable_copy_move’ is not a class template
>   157 |   struct _Enable_copy_move<false, false, true, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:157:58: error: redeclared with 1 template parameter
>   157 |   struct _Enable_copy_move<false, false, true, true, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:169:10: error: ‘_Enable_copy_move’ is not a class template
>   169 |   struct _Enable_copy_move<true, true, false, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:169:57: error: redeclared with 1 template parameter
>   169 |   struct _Enable_copy_move<true, true, false, true, _Tag>
>       |                                                         ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:181:10: error: ‘_Enable_copy_move’ is not a class template
>   181 |   struct _Enable_copy_move<false, true, false, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:181:58: error: redeclared with 1 template parameter
>   181 |   struct _Enable_copy_move<false, true, false, true, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:193:10: error: ‘_Enable_copy_move’ is not a class template
>   193 |   struct _Enable_copy_move<true, false, false, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:193:58: error: redeclared with 1 template parameter
>   193 |   struct _Enable_copy_move<true, false, false, true, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:205:10: error: ‘_Enable_copy_move’ is not a class template
>   205 |   struct _Enable_copy_move<false, false, false, true, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:205:59: error: redeclared with 1 template parameter
>   205 |   struct _Enable_copy_move<false, false, false, true, _Tag>
>       |                                                           ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:217:10: error: ‘_Enable_copy_move’ is not a class template
>   217 |   struct _Enable_copy_move<true, true, true, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:217:57: error: redeclared with 1 template parameter
>   217 |   struct _Enable_copy_move<true, true, true, false, _Tag>
>       |                                                         ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:229:10: error: ‘_Enable_copy_move’ is not a class template
>   229 |   struct _Enable_copy_move<false, true, true, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:229:58: error: redeclared with 1 template parameter
>   229 |   struct _Enable_copy_move<false, true, true, false, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:241:10: error: ‘_Enable_copy_move’ is not a class template
>   241 |   struct _Enable_copy_move<true, false, true, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:241:58: error: redeclared with 1 template parameter
>   241 |   struct _Enable_copy_move<true, false, true, false, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:253:10: error: ‘_Enable_copy_move’ is not a class template
>   253 |   struct _Enable_copy_move<false, false, true, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:253:59: error: redeclared with 1 template parameter
>   253 |   struct _Enable_copy_move<false, false, true, false, _Tag>
>       |                                                           ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:265:10: error: ‘_Enable_copy_move’ is not a class template
>   265 |   struct _Enable_copy_move<true, true, false, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:265:58: error: redeclared with 1 template parameter
>   265 |   struct _Enable_copy_move<true, true, false, false, _Tag>
>       |                                                          ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:277:10: error: ‘_Enable_copy_move’ is not a class template
>   277 |   struct _Enable_copy_move<false, true, false, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:277:59: error: redeclared with 1 template parameter
>   277 |   struct _Enable_copy_move<false, true, false, false, _Tag>
>       |                                                           ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:289:10: error: ‘_Enable_copy_move’ is not a class template
>   289 |   struct _Enable_copy_move<true, false, false, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:289:59: error: redeclared with 1 template parameter
>   289 |   struct _Enable_copy_move<true, false, false, false, _Tag>
>       |                                                           ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:301:10: error: ‘_Enable_copy_move’ is not a class template
>   301 |   struct _Enable_copy_move<false, false, false, false, _Tag>
>       |          ^~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/enable_special_members.h:301:60: error: redeclared with 1 template parameter
>   301 |   struct _Enable_copy_move<false, false, false, false, _Tag>
>       |                                                            ^
> /usr/include/c++/11/bits/enable_special_members.h:87:10: note: previous declaration ‘template<bool _Copy, bool _CopyAssignment, bool _Move, bool _MoveAssignment, class _Tag> struct std::_Enable_copy_move’ used 5 template parameters
>    87 |   struct _Enable_copy_move { };
>       |          ^~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/unordered_map:46,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/hashtable.h:48:10: error: ‘__not_’ does not name a type
>    48 |       =  __not_<__and_<// Do not cache for fast hasher.
>       |          ^~~~~~
> /usr/include/c++/11/bits/hashtable.h:58:9: error: ‘_Enable_default_constructor’ does not name a type
>    58 |       = _Enable_default_constructor<__and_<is_default_constructible<_Equal>,
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:60:79: error: expected unqualified-id before ‘,’ token
>    60 |                                        is_default_constructible<_Allocator>>{},
>       |                                                                               ^
> /usr/include/c++/11/bits/hashtable.h:61:37: error: ‘__detail’ has not been declared
>    61 |                                     __detail::_Hash_node_base>;
>       |                                     ^~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:61:62: error: expected constructor, destructor, or type conversion before ‘>’ token
>    61 |                                     __detail::_Hash_node_base>;
>       |                                                              ^
> /usr/include/c++/11/bits/hashtable.h:181:14: error: ‘__detail’ has not been declared
>   181 |     : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal,
>       |              ^~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:181:24: error: expected ‘{’ before ‘_Hashtable_base’
>   181 |     : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal,
>       |                        ^~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1107:15: error: expected initializer before ‘<’ token
>  1107 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1120:5: error: ‘_Hashtable’ does not name a type
>  1120 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1139:7: error: ‘_Hashtable’ does not name a type
>  1139 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1156:7: error: ‘_Hashtable’ does not name a type
>  1156 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1185:15: error: expected initializer before ‘<’ token
>  1185 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1238:7: error: too many template-parameter-lists
>  1238 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1289:7: error: too many template-parameter-lists
>  1289 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1337:15: error: expected initializer before ‘<’ token
>  1337 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1354:15: error: expected initializer before ‘<’ token
>  1354 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1388:15: error: expected initializer before ‘<’ token
>  1388 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1406:5: error: ‘_Hashtable’ does not name a type
>  1406 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1428:5: error: ‘_Hashtable’ does not name a type
>  1428 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1461:5: error: ‘_Hashtable’ does not name a type
>  1461 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1482:5: error: ‘_Hashtable’ does not name a type
>  1482 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1528:5: error: ‘_Hashtable’ does not name a type
>  1528 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |     ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1541:15: error: expected initializer before ‘<’ token
>  1541 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1588:15: error: expected initializer before ‘<’ token
>  1588 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1603:15: error: expected initializer before ‘<’ token
>  1603 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1652:15: error: expected initializer before ‘<’ token
>  1652 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1713:15: error: expected initializer before ‘<’ token
>  1713 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1740:15: error: expected initializer before ‘<’ token
>  1740 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1827:15: error: expected initializer before ‘<’ token
>  1827 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1857:7: error: too many template-parameter-lists
>  1857 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1886:15: error: expected initializer before ‘<’ token
>  1886 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1919:15: error: expected initializer before ‘<’ token
>  1919 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1943:15: error: expected initializer before ‘<’ token
>  1943 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:1960:7: error: too many template-parameter-lists
>  1960 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:1986:7: error: too many template-parameter-lists
>  1986 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:2008:15: error: expected initializer before ‘<’ token
>  2008 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2038:15: error: expected initializer before ‘<’ token
>  2038 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2095:7: error: too many template-parameter-lists
>  2095 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:2122:7: error: too many template-parameter-lists
>  2122 |       _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/hashtable.h:2146:15: error: expected initializer before ‘<’ token
>  2146 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2166:15: error: expected initializer before ‘<’ token
>  2166 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2194:15: error: expected initializer before ‘<’ token
>  2194 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2218:15: error: expected initializer before ‘<’ token
>  2218 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2269:15: error: expected initializer before ‘<’ token
>  2269 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2316:15: error: expected initializer before ‘<’ token
>  2316 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2332:15: error: expected initializer before ‘<’ token
>  2332 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2355:15: error: expected initializer before ‘<’ token
>  2355 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2378:15: error: expected initializer before ‘<’ token
>  2378 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> /usr/include/c++/11/bits/hashtable.h:2421:15: error: expected initializer before ‘<’ token
>  2421 |     _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
>       |               ^
> In file included from /usr/include/c++/11/unordered_map:47,
>                  from ./core/file/dicom/element.h:20,
>                  from core/file/dicom/element.cpp:18:
> /usr/include/c++/11/bits/unordered_map.h:40:27: error: ‘__detail’ does not name a type
>    40 |     using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>;
>       |                           ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:44:29: error: ‘hash’ does not name a type
>    44 |            typename _Hash = hash<_Key>,
>       |                             ^~~~
> /usr/include/c++/11/bits/unordered_map.h:44:33: error: expected ‘>’ before ‘<’ token
>    44 |            typename _Hash = hash<_Key>,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:48:30: error: ‘_Hashtable’ does not name a type
>    48 |     using __umap_hashtable = _Hashtable<_Key, std::pair<const _Key, _Tp>,
>       |                              ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:57:28: error: ‘__detail’ does not name a type
>    57 |     using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>;
>       |                            ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:61:29: error: ‘hash’ does not name a type
>    61 |            typename _Hash = hash<_Key>,
>       |                             ^~~~
> /usr/include/c++/11/bits/unordered_map.h:61:33: error: expected ‘>’ before ‘<’ token
>    61 |            typename _Hash = hash<_Key>,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:65:31: error: ‘_Hashtable’ does not name a type
>    65 |     using __ummap_hashtable = _Hashtable<_Key, std::pair<const _Key, _Tp>,
>       |                               ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:99:29: error: ‘hash’ does not name a type
>    99 |            typename _Hash = hash<_Key>,
>       |                             ^~~~
> /usr/include/c++/11/bits/unordered_map.h:99:33: error: expected ‘>’ before ‘<’ token
>    99 |            typename _Hash = hash<_Key>,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:104:15: error: ‘__umap_hashtable’ does not name a type
>   104 |       typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc>  _Hashtable;
>       |               ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:105:7: error: ‘_Hashtable’ does not name a type
>   105 |       _Hashtable _M_h;
>       |       ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:111:24: error: ‘_Hashtable’ has not been declared
>   111 |       typedef typename _Hashtable::key_type     key_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:112:24: error: ‘_Hashtable’ has not been declared
>   112 |       typedef typename _Hashtable::value_type   value_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:113:24: error: ‘_Hashtable’ has not been declared
>   113 |       typedef typename _Hashtable::mapped_type  mapped_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:114:24: error: ‘_Hashtable’ has not been declared
>   114 |       typedef typename _Hashtable::hasher       hasher;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:115:24: error: ‘_Hashtable’ has not been declared
>   115 |       typedef typename _Hashtable::key_equal    key_equal;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:116:24: error: ‘_Hashtable’ has not been declared
>   116 |       typedef typename _Hashtable::allocator_type allocator_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:121:24: error: ‘_Hashtable’ has not been declared
>   121 |       typedef typename _Hashtable::pointer              pointer;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:122:24: error: ‘_Hashtable’ has not been declared
>   122 |       typedef typename _Hashtable::const_pointer        const_pointer;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:123:24: error: ‘_Hashtable’ has not been declared
>   123 |       typedef typename _Hashtable::reference            reference;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:124:24: error: ‘_Hashtable’ has not been declared
>   124 |       typedef typename _Hashtable::const_reference      const_reference;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:125:24: error: ‘_Hashtable’ has not been declared
>   125 |       typedef typename _Hashtable::iterator             iterator;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:126:24: error: ‘_Hashtable’ has not been declared
>   126 |       typedef typename _Hashtable::const_iterator       const_iterator;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:127:24: error: ‘_Hashtable’ has not been declared
>   127 |       typedef typename _Hashtable::local_iterator       local_iterator;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:128:24: error: ‘_Hashtable’ has not been declared
>   128 |       typedef typename _Hashtable::const_local_iterator const_local_iterator;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:129:24: error: ‘_Hashtable’ has not been declared
>   129 |       typedef typename _Hashtable::size_type            size_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:130:24: error: ‘_Hashtable’ has not been declared
>   130 |       typedef typename _Hashtable::difference_type      difference_type;
>       |                        ^~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:227:37: error: expected ‘)’ before ‘<’ token
>   227 |       unordered_map(initializer_list<value_type> __l,
>       |                    ~                ^
>       |                                     )
> /usr/include/c++/11/bits/unordered_map.h:258:37: error: expected ‘)’ before ‘<’ token
>   258 |       unordered_map(initializer_list<value_type> __l,
>       |                    ~                ^
>       |                                     )
> /usr/include/c++/11/bits/unordered_map.h:264:37: error: expected ‘)’ before ‘<’ token
>   264 |       unordered_map(initializer_list<value_type> __l,
>       |                    ~                ^
>       |                                     )
> /usr/include/c++/11/bits/unordered_map.h:290:17: error: ‘initializer_list’ has not been declared
>   290 |       operator=(initializer_list<value_type> __l)
>       |                 ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:290:33: error: expected ‘,’ or ‘...’ before ‘<’ token
>   290 |       operator=(initializer_list<value_type> __l)
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:561:9: error: ‘__enable_if_t’ does not name a type
>   561 |         __enable_if_t<is_constructible<value_type, _Pair&&>::value,
>       |         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:600:9: error: ‘__enable_if_t’ does not name a type
>   600 |         __enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
>       |         ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:627:14: error: ‘initializer_list’ has not been declared
>   627 |       insert(initializer_list<value_type> __l)
>       |              ^~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:627:30: error: expected ‘,’ or ‘...’ before ‘<’ token
>   627 |       insert(initializer_list<value_type> __l)
>       |                              ^
> /usr/include/c++/11/bits/unordered_map.h:745:7: error: ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::iterator)’ cannot be overloaded with ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::const_iterator)’
>   745 |       erase(iterator __position)
>       |       ^~~~~
> /usr/include/c++/11/bits/unordered_map.h:740:7: note: previous declaration ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::const_iterator)’
>   740 |       erase(const_iterator __position)
>       |       ^~~~~
> /usr/include/c++/11/bits/unordered_map.h:1132:76: error: wrong number of template arguments (5, should be at least 2)
>  1132 |         operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&,
>       |                                                                            ^
> /usr/include/c++/11/bits/unordered_map.h:102:11: note: provided for ‘template<class _Key, class _Tp, class _Hash> class std::unordered_map’
>   102 |     class unordered_map
>       |           ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:1133:76: error: wrong number of template arguments (5, should be at least 2)
>  1133 |                    const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&);
>       |                                                                            ^
> /usr/include/c++/11/bits/unordered_map.h:102:11: note: provided for ‘template<class _Key, class _Tp, class _Hash> class std::unordered_map’
>   102 |     class unordered_map
>       |           ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:1132:9: error: ‘bool Eigen::operator==(const int&, const int&)’ must have an argument of class or enumerated type
>  1132 |         operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&,
>       |         ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:805:26: error: ‘_M_h’ was not declared in this scope
>   805 |       noexcept( noexcept(_M_h.swap(__x._M_h)) )
>       |                          ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In constructor ‘std::unordered_map<_Key, _Tp, _Hash>::unordered_map(std::unordered_map<_Key, _Tp, _Hash>::size_type, const hasher&, const key_equal&, const allocator_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:155:9: error: class ‘std::unordered_map<_Key, _Tp, _Hash>’ does not have any field named ‘_M_h’
>   155 |       : _M_h(__n, __hf, __eql, __a)
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In constructor ‘std::unordered_map<_Key, _Tp, _Hash>::unordered_map(_InputIterator, _InputIterator, std::unordered_map<_Key, _Tp, _Hash>::size_type, const hasher&, const key_equal&, const allocator_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:177:11: error: class ‘std::unordered_map<_Key, _Tp, _Hash>’ does not have any field named ‘_M_h’
>   177 |         : _M_h(__first, __last, __n, __hf, __eql, __a)
>       |           ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In constructor ‘std::unordered_map<_Key, _Tp, _Hash>::unordered_map(const allocator_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:192:11: error: class ‘std::unordered_map<_Key, _Tp, _Hash>’ does not have any field named ‘_M_h’
>   192 |         : _M_h(__a)
>       |           ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In constructor ‘std::unordered_map<_Key, _Tp, _Hash>::unordered_map(const std::unordered_map<_Key, _Tp, _Hash>&, const allocator_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:202:9: error: class ‘std::unordered_map<_Key, _Tp, _Hash>’ does not have any field named ‘_M_h’
>   202 |       : _M_h(__umap._M_h, __a)
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In constructor ‘std::unordered_map<_Key, _Tp, _Hash>::unordered_map(std::unordered_map<_Key, _Tp, _Hash>&&, const allocator_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:213:9: error: class ‘std::unordered_map<_Key, _Tp, _Hash>’ does not have any field named ‘_M_h’
>   213 |       : _M_h(std::move(__umap._M_h), __a)
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>& std::unordered_map<_Key, _Tp, _Hash>::operator=(int)’:
> /usr/include/c++/11/bits/unordered_map.h:292:9: error: ‘_M_h’ was not declared in this scope
>   292 |         _M_h = __l;
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h:292:16: error: ‘__l’ was not declared in this scope; did you mean ‘__lg’?
>   292 |         _M_h = __l;
>       |                ^~~
>       |                __lg
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::allocator_type std::unordered_map<_Key, _Tp, _Hash>::get_allocator() const’:
> /usr/include/c++/11/bits/unordered_map.h:299:16: error: ‘_M_h’ was not declared in this scope
>   299 |       { return _M_h.get_allocator(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘bool std::unordered_map<_Key, _Tp, _Hash>::empty() const’:
> /usr/include/c++/11/bits/unordered_map.h:306:16: error: ‘_M_h’ was not declared in this scope
>   306 |       { return _M_h.empty(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::size() const’:
> /usr/include/c++/11/bits/unordered_map.h:311:16: error: ‘_M_h’ was not declared in this scope
>   311 |       { return _M_h.size(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::max_size() const’:
> /usr/include/c++/11/bits/unordered_map.h:316:16: error: ‘_M_h’ was not declared in this scope
>   316 |       { return _M_h.max_size(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::begin()’:
> /usr/include/c++/11/bits/unordered_map.h:326:16: error: ‘_M_h’ was not declared in this scope
>   326 |       { return _M_h.begin(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_iterator std::unordered_map<_Key, _Tp, _Hash>::begin() const’:
> /usr/include/c++/11/bits/unordered_map.h:335:16: error: ‘_M_h’ was not declared in this scope
>   335 |       { return _M_h.begin(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_iterator std::unordered_map<_Key, _Tp, _Hash>::cbegin() const’:
> /usr/include/c++/11/bits/unordered_map.h:339:16: error: ‘_M_h’ was not declared in this scope
>   339 |       { return _M_h.begin(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::end()’:
> /usr/include/c++/11/bits/unordered_map.h:348:16: error: ‘_M_h’ was not declared in this scope
>   348 |       { return _M_h.end(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_iterator std::unordered_map<_Key, _Tp, _Hash>::end() const’:
> /usr/include/c++/11/bits/unordered_map.h:357:16: error: ‘_M_h’ was not declared in this scope
>   357 |       { return _M_h.end(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_iterator std::unordered_map<_Key, _Tp, _Hash>::cend() const’:
> /usr/include/c++/11/bits/unordered_map.h:361:16: error: ‘_M_h’ was not declared in this scope
>   361 |       { return _M_h.end(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::pair<int, bool> std::unordered_map<_Key, _Tp, _Hash>::emplace(_Args&& ...)’:
> /usr/include/c++/11/bits/unordered_map.h:389:18: error: ‘_M_h’ was not declared in this scope
>   389 |         { return _M_h.emplace(std::forward<_Args>(__args)...); }
>       |                  ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::emplace_hint(std::unordered_map<_Key, _Tp, _Hash>::const_iterator, _Args&& ...)’:
> /usr/include/c++/11/bits/unordered_map.h:420:18: error: ‘_M_h’ was not declared in this scope
>   420 |         { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
>       |                  ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::pair<int, bool> std::unordered_map<_Key, _Tp, _Hash>::insert(const value_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:552:16: error: ‘_M_h’ was not declared in this scope
>   552 |       { return _M_h.insert(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::pair<int, bool> std::unordered_map<_Key, _Tp, _Hash>::insert(std::unordered_map<_Key, _Tp, _Hash>::value_type&&)’:
> /usr/include/c++/11/bits/unordered_map.h:558:16: error: ‘_M_h’ was not declared in this scope
>   558 |       { return _M_h.insert(std::move(__x)); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::insert(std::unordered_map<_Key, _Tp, _Hash>::const_iterator, const value_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:591:16: error: ‘_M_h’ was not declared in this scope
>   591 |       { return _M_h.insert(__hint, __x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::insert(std::unordered_map<_Key, _Tp, _Hash>::const_iterator, std::unordered_map<_Key, _Tp, _Hash>::value_type&&)’:
> /usr/include/c++/11/bits/unordered_map.h:597:16: error: ‘_M_h’ was not declared in this scope
>   597 |       { return _M_h.insert(__hint, std::move(__x)); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::insert(_InputIterator, _InputIterator)’:
> /usr/include/c++/11/bits/unordered_map.h:617:11: error: ‘_M_h’ was not declared in this scope
>   617 |         { _M_h.insert(__first, __last); }
>       |           ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::insert(int)’:
> /usr/include/c++/11/bits/unordered_map.h:628:9: error: ‘_M_h’ was not declared in this scope
>   628 |       { _M_h.insert(__l); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h:628:21: error: ‘__l’ was not declared in this scope; did you mean ‘__lg’?
>   628 |       { _M_h.insert(__l); }
>       |                     ^~~
>       |                     __lg
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::const_iterator)’:
> /usr/include/c++/11/bits/unordered_map.h:741:16: error: ‘_M_h’ was not declared in this scope
>   741 |       { return _M_h.erase(__position); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::iterator)’:
> /usr/include/c++/11/bits/unordered_map.h:746:16: error: ‘_M_h’ was not declared in this scope
>   746 |       { return _M_h.erase(__position); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::erase(const key_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:763:16: error: ‘_M_h’ was not declared in this scope
>   763 |       { return _M_h.erase(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::erase(std::unordered_map<_Key, _Tp, _Hash>::const_iterator, std::unordered_map<_Key, _Tp, _Hash>::const_iterator)’:
> /usr/include/c++/11/bits/unordered_map.h:781:16: error: ‘_M_h’ was not declared in this scope
>   781 |       { return _M_h.erase(__first, __last); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::clear()’:
> /usr/include/c++/11/bits/unordered_map.h:791:9: error: ‘_M_h’ was not declared in this scope
>   791 |       { _M_h.clear(); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::swap(std::unordered_map<_Key, _Tp, _Hash>&)’:
> /usr/include/c++/11/bits/unordered_map.h:806:9: error: ‘_M_h’ was not declared in this scope
>   806 |       { _M_h.swap(__x._M_h); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::hasher std::unordered_map<_Key, _Tp, _Hash>::hash_function() const’:
> /usr/include/c++/11/bits/unordered_map.h:845:16: error: ‘_M_h’ was not declared in this scope
>   845 |       { return _M_h.hash_function(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::key_equal std::unordered_map<_Key, _Tp, _Hash>::key_eq() const’:
> /usr/include/c++/11/bits/unordered_map.h:851:16: error: ‘_M_h’ was not declared in this scope
>   851 |       { return _M_h.key_eq(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::iterator std::unordered_map<_Key, _Tp, _Hash>::find(const key_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:869:16: error: ‘_M_h’ was not declared in this scope
>   869 |       { return _M_h.find(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_iterator std::unordered_map<_Key, _Tp, _Hash>::find(const key_type&) const’:
> /usr/include/c++/11/bits/unordered_map.h:880:16: error: ‘_M_h’ was not declared in this scope
>   880 |       { return _M_h.find(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::count(const key_type&) const’:
> /usr/include/c++/11/bits/unordered_map.h:902:16: error: ‘_M_h’ was not declared in this scope
>   902 |       { return _M_h.count(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::pair<int, int> std::unordered_map<_Key, _Tp, _Hash>::equal_range(const key_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:942:16: error: ‘_M_h’ was not declared in this scope
>   942 |       { return _M_h.equal_range(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::pair<int, int> std::unordered_map<_Key, _Tp, _Hash>::equal_range(const key_type&) const’:
> /usr/include/c++/11/bits/unordered_map.h:954:16: error: ‘_M_h’ was not declared in this scope
>   954 |       { return _M_h.equal_range(__x); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::mapped_type& std::unordered_map<_Key, _Tp, _Hash>::operator[](const key_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:980:16: error: ‘_M_h’ was not declared in this scope
>   980 |       { return _M_h[__k]; }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::mapped_type& std::unordered_map<_Key, _Tp, _Hash>::operator[](std::unordered_map<_Key, _Tp, _Hash>::key_type&&)’:
> /usr/include/c++/11/bits/unordered_map.h:984:16: error: ‘_M_h’ was not declared in this scope
>   984 |       { return _M_h[std::move(__k)]; }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::mapped_type& std::unordered_map<_Key, _Tp, _Hash>::at(const key_type&)’:
> /usr/include/c++/11/bits/unordered_map.h:997:16: error: ‘_M_h’ was not declared in this scope
>   997 |       { return _M_h.at(__k); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘const mapped_type& std::unordered_map<_Key, _Tp, _Hash>::at(const key_type&) const’:
> /usr/include/c++/11/bits/unordered_map.h:1001:16: error: ‘_M_h’ was not declared in this scope
>  1001 |       { return _M_h.at(__k); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::bucket_count() const’:
> /usr/include/c++/11/bits/unordered_map.h:1009:16: error: ‘_M_h’ was not declared in this scope
>  1009 |       { return _M_h.bucket_count(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::max_bucket_count() const’:
> /usr/include/c++/11/bits/unordered_map.h:1014:16: error: ‘_M_h’ was not declared in this scope
>  1014 |       { return _M_h.max_bucket_count(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::bucket_size(std::unordered_map<_Key, _Tp, _Hash>::size_type) const’:
> /usr/include/c++/11/bits/unordered_map.h:1023:16: error: ‘_M_h’ was not declared in this scope
>  1023 |       { return _M_h.bucket_size(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::size_type std::unordered_map<_Key, _Tp, _Hash>::bucket(const key_type&) const’:
> /usr/include/c++/11/bits/unordered_map.h:1032:16: error: ‘_M_h’ was not declared in this scope
>  1032 |       { return _M_h.bucket(__key); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::local_iterator std::unordered_map<_Key, _Tp, _Hash>::begin(std::unordered_map<_Key, _Tp, _Hash>::size_type)’:
> /usr/include/c++/11/bits/unordered_map.h:1042:16: error: ‘_M_h’ was not declared in this scope
>  1042 |       { return _M_h.begin(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_local_iterator std::unordered_map<_Key, _Tp, _Hash>::begin(std::unordered_map<_Key, _Tp, _Hash>::size_type) const’:
> /usr/include/c++/11/bits/unordered_map.h:1053:16: error: ‘_M_h’ was not declared in this scope
>  1053 |       { return _M_h.begin(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_local_iterator std::unordered_map<_Key, _Tp, _Hash>::cbegin(std::unordered_map<_Key, _Tp, _Hash>::size_type) const’:
> /usr/include/c++/11/bits/unordered_map.h:1057:16: error: ‘_M_h’ was not declared in this scope
>  1057 |       { return _M_h.cbegin(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::local_iterator std::unordered_map<_Key, _Tp, _Hash>::end(std::unordered_map<_Key, _Tp, _Hash>::size_type)’:
> /usr/include/c++/11/bits/unordered_map.h:1068:16: error: ‘_M_h’ was not declared in this scope
>  1068 |       { return _M_h.end(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_local_iterator std::unordered_map<_Key, _Tp, _Hash>::end(std::unordered_map<_Key, _Tp, _Hash>::size_type) const’:
> /usr/include/c++/11/bits/unordered_map.h:1079:16: error: ‘_M_h’ was not declared in this scope
>  1079 |       { return _M_h.end(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘std::unordered_map<_Key, _Tp, _Hash>::const_local_iterator std::unordered_map<_Key, _Tp, _Hash>::cend(std::unordered_map<_Key, _Tp, _Hash>::size_type) const’:
> /usr/include/c++/11/bits/unordered_map.h:1083:16: error: ‘_M_h’ was not declared in this scope
>  1083 |       { return _M_h.cend(__n); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘float std::unordered_map<_Key, _Tp, _Hash>::load_factor() const’:
> /usr/include/c++/11/bits/unordered_map.h:1091:16: error: ‘_M_h’ was not declared in this scope
>  1091 |       { return _M_h.load_factor(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘float std::unordered_map<_Key, _Tp, _Hash>::max_load_factor() const’:
> /usr/include/c++/11/bits/unordered_map.h:1097:16: error: ‘_M_h’ was not declared in this scope
>  1097 |       { return _M_h.max_load_factor(); }
>       |                ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::max_load_factor(float)’:
> /usr/include/c++/11/bits/unordered_map.h:1105:9: error: ‘_M_h’ was not declared in this scope
>  1105 |       { _M_h.max_load_factor(__z); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::rehash(std::unordered_map<_Key, _Tp, _Hash>::size_type)’:
> /usr/include/c++/11/bits/unordered_map.h:1116:9: error: ‘_M_h’ was not declared in this scope
>  1116 |       { _M_h.rehash(__n); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: In member function ‘void std::unordered_map<_Key, _Tp, _Hash>::reserve(std::unordered_map<_Key, _Tp, _Hash>::size_type)’:
> /usr/include/c++/11/bits/unordered_map.h:1127:9: error: ‘_M_h’ was not declared in this scope
>  1127 |       { _M_h.reserve(__n); }
>       |         ^~~~
> /usr/include/c++/11/bits/unordered_map.h: At global scope:
> /usr/include/c++/11/bits/unordered_map.h:1242:29: error: ‘hash’ does not name a type
>  1242 |            typename _Hash = hash<_Key>,
>       |                             ^~~~
> /usr/include/c++/11/bits/unordered_map.h:1242:33: error: expected ‘>’ before ‘<’ token
>  1242 |            typename _Hash = hash<_Key>,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:1245:11: error: redeclared with 3 template parameters
>  1245 |     class unordered_multimap
>       |           ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:73:11: note: previous declaration ‘template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc> class std::unordered_multimap’ used 5 template parameters
>    73 |     class unordered_multimap;
>       |           ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2120:5: error: variable or field ‘swap’ declared void
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~
> /usr/include/c++/11/bits/unordered_map.h:2120:10: error: ‘unordered_map’ was not declared in this scope; did you mean ‘std::unordered_map’?
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |          ^~~~~~~~~~~~~
>       |          std::unordered_map
> /usr/include/c++/11/bits/unordered_map.h:102:11: note: ‘std::unordered_map’ declared here
>   102 |     class unordered_map
>       |           ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2120:28: error: expected primary-expression before ‘,’ token
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                            ^
> /usr/include/c++/11/bits/unordered_map.h:2120:33: error: expected primary-expression before ‘,’ token
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:2120:40: error: expected primary-expression before ‘,’ token
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                        ^
> /usr/include/c++/11/bits/unordered_map.h:2120:47: error: expected primary-expression before ‘,’ token
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                               ^
> /usr/include/c++/11/bits/unordered_map.h:2120:55: error: expected primary-expression before ‘>’ token
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                                       ^
> /usr/include/c++/11/bits/unordered_map.h:2120:58: error: ‘__x’ was not declared in this scope
>  2120 |     swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                                          ^~~
> /usr/include/c++/11/bits/unordered_map.h:2121:10: error: ‘unordered_map’ was not declared in this scope; did you mean ‘std::unordered_map’?
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |          ^~~~~~~~~~~~~
>       |          std::unordered_map
> /usr/include/c++/11/bits/unordered_map.h:102:11: note: ‘std::unordered_map’ declared here
>   102 |     class unordered_map
>       |           ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2121:28: error: expected primary-expression before ‘,’ token
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                            ^
> /usr/include/c++/11/bits/unordered_map.h:2121:33: error: expected primary-expression before ‘,’ token
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:2121:40: error: expected primary-expression before ‘,’ token
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                        ^
> /usr/include/c++/11/bits/unordered_map.h:2121:47: error: expected primary-expression before ‘,’ token
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                               ^
> /usr/include/c++/11/bits/unordered_map.h:2121:55: error: expected primary-expression before ‘>’ token
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                                       ^
> /usr/include/c++/11/bits/unordered_map.h:2121:58: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  2121 |          unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                                          ^~~
>       |                                                          __yn
> /usr/include/c++/11/bits/unordered_map.h:2127:5: error: variable or field ‘swap’ declared void
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~
> /usr/include/c++/11/bits/unordered_map.h:2127:10: error: ‘unordered_multimap’ was not declared in this scope; did you mean ‘std::unordered_multimap’?
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |          ^~~~~~~~~~~~~~~~~~
>       |          std::unordered_multimap
> /usr/include/c++/11/bits/unordered_map.h:73:11: note: ‘std::unordered_multimap’ declared here
>    73 |     class unordered_multimap;
>       |           ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2127:33: error: expected primary-expression before ‘,’ token
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:2127:38: error: expected primary-expression before ‘,’ token
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                      ^
> /usr/include/c++/11/bits/unordered_map.h:2127:45: error: expected primary-expression before ‘,’ token
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                             ^
> /usr/include/c++/11/bits/unordered_map.h:2127:52: error: expected primary-expression before ‘,’ token
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                                    ^
> /usr/include/c++/11/bits/unordered_map.h:2127:60: error: expected primary-expression before ‘>’ token
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                                            ^
> /usr/include/c++/11/bits/unordered_map.h:2127:63: error: ‘__x’ was not declared in this scope
>  2127 |     swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                                               ^~~
> /usr/include/c++/11/bits/unordered_map.h:2128:10: error: ‘unordered_multimap’ was not declared in this scope; did you mean ‘std::unordered_multimap’?
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |          ^~~~~~~~~~~~~~~~~~
>       |          std::unordered_multimap
> /usr/include/c++/11/bits/unordered_map.h:73:11: note: ‘std::unordered_multimap’ declared here
>    73 |     class unordered_multimap;
>       |           ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2128:33: error: expected primary-expression before ‘,’ token
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                 ^
> /usr/include/c++/11/bits/unordered_map.h:2128:38: error: expected primary-expression before ‘,’ token
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                      ^
> /usr/include/c++/11/bits/unordered_map.h:2128:45: error: expected primary-expression before ‘,’ token
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                             ^
> /usr/include/c++/11/bits/unordered_map.h:2128:52: error: expected primary-expression before ‘,’ token
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                                    ^
> /usr/include/c++/11/bits/unordered_map.h:2128:60: error: expected primary-expression before ‘>’ token
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                                            ^
> /usr/include/c++/11/bits/unordered_map.h:2128:63: error: ‘__y’ was not declared in this scope; did you mean ‘__yn’?
>  2128 |          unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
>       |                                                               ^~~
>       |                                                               __yn
> /usr/include/c++/11/bits/unordered_map.h:2134:22: error: ‘unordered_map’ does not name a type
>  2134 |     operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                      ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2134:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>  2134 |     operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                   ^
> /usr/include/c++/11/bits/unordered_map.h:2134:5: error: ‘bool Eigen::operator==(int)’ must have an argument of class or enumerated type
>  2134 |     operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2141:22: error: ‘unordered_map’ does not name a type
>  2141 |     operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                      ^~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2141:35: error: expected ‘,’ or ‘...’ before ‘<’ token
>  2141 |     operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                   ^
> /usr/include/c++/11/bits/unordered_map.h:2141:5: error: ‘bool Eigen::operator!=(int)’ must have an argument of class or enumerated type
>  2141 |     operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2148:22: error: ‘unordered_multimap’ does not name a type
>  2148 |     operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                      ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2148:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>  2148 |     operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                        ^
> /usr/include/c++/11/bits/unordered_map.h:2148:5: error: ‘bool Eigen::operator==(int)’ must have an argument of class or enumerated type
>  2148 |     operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2155:22: error: ‘unordered_multimap’ does not name a type
>  2155 |     operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                      ^~~~~~~~~~~~~~~~~~
> /usr/include/c++/11/bits/unordered_map.h:2155:40: error: expected ‘,’ or ‘...’ before ‘<’ token
>  2155 |     operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |                                        ^
> /usr/include/c++/11/bits/unordered_map.h:2155:5: error: ‘bool Eigen::operator!=(int)’ must have an argument of class or enumerated type
>  2155 |     operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
>       |     ^~~~~~~~
> In file included from ./core/file/dicom/element.h:23,
>                  from core/file/dicom/element.cpp:18:
> ./core/raw.h:88:38: error: ‘is_complex’ was not declared in this scope; did you mean ‘MR::is_complex’?
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                      ^~~~~~~~~~
>       |                                      MR::is_complex
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:242:37: note: ‘MR::is_complex’ declared here
>   242 |   template <class ValueType> struct is_complex : std::false_type { NOMEMALIGN };
>       |                                     ^~~~~~~~~~
> In file included from ./core/file/dicom/element.h:23,
>                  from core/file/dicom/element.cpp:18:
> ./core/raw.h:88:58: error: template argument 1 is invalid
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                          ^
> ./core/raw.h:88:59: error: expected identifier before ‘::’ token
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                           ^~
> ./core/raw.h:88:61: error: declaration of ‘value’ not in a namespace surrounding ‘::’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                             ^~~~~
> ./core/raw.h:88:61: error: ‘value’ should have been declared inside ‘::’
> ./core/raw.h:88:7: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |       ^~~~~~
> ./core/raw.h:88:59: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                           ^~
> ./core/raw.h:88:66: error: expected ‘;’ before ‘,’ token
>    88 |       inline typename std::enable_if<is_complex<ValueType>::value, ValueType>::type swap (ValueType v) { return { swap (v.real()), swap (v.imag()) }; }
>       |                                                                  ^
>       |                                                                  ;
> ./core/raw.h: In function ‘ValueType Eigen::fetch_LE(const void*)’:
> ./core/raw.h:111:64: error: ‘ByteOrder’ has not been declared
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                ^~~~~~~~~
> ./core/raw.h:111:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:111:92: error: expected primary-expression before ‘>’ token
>   111 |       inline ValueType fetch_LE (const void* address) { return ByteOrder::LE (*as<ValueType> (address)); }
>       |                                                                                            ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_BE(const void*)’:
> ./core/raw.h:114:64: error: ‘ByteOrder’ has not been declared
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                ^~~~~~~~~
> ./core/raw.h:114:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:114:92: error: expected primary-expression before ‘>’ token
>   114 |       inline ValueType fetch_BE (const void* address) { return ByteOrder::BE (*as<ValueType> (address)); }
>       |                                                                                            ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_(const void*, bool)’:
> ./core/raw.h:117:105: error: ‘ByteOrder’ has not been declared
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                         ^~~~~~~~~
> ./core/raw.h:117:123: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                                           ^~
>       |                                                                                                                           Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:117:135: error: expected primary-expression before ‘>’ token
>   117 |       inline ValueType fetch_ (const void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (*as<ValueType>(address), is_big_endian); }
>       |                                                                                                                                       ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch__native(const void*)’:
> ./core/raw.h:120:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   120 |       inline ValueType fetch__native (const void* address) { return *as<ValueType>(address); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:120:82: error: expected primary-expression before ‘>’ token
>   120 |       inline ValueType fetch__native (const void* address) { return *as<ValueType>(address); }
>       |                                                                                  ^
> ./core/raw.h: In function ‘void Eigen::store_LE(ValueType, void*)’:
> ./core/raw.h:124:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:124:82: error: expected primary-expression before ‘>’ token
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                                  ^
> ./core/raw.h:124:95: error: ‘ByteOrder’ has not been declared
>   124 |       inline void store_LE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::LE (value); }
>       |                                                                                               ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_BE(ValueType, void*)’:
> ./core/raw.h:127:70: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                      ^~
>       |                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:127:82: error: expected primary-expression before ‘>’ token
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                                  ^
> ./core/raw.h:127:95: error: ‘ByteOrder’ has not been declared
>   127 |       inline void store_BE (const ValueType value, void* address) { *as<ValueType>(address) = ByteOrder::BE (value); }
>       |                                                                                               ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store(ValueType, void*, bool)’:
> ./core/raw.h:130:110: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                              ^~
>       |                                                                                                              Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:130:122: error: expected primary-expression before ‘>’ token
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                          ^
> ./core/raw.h:130:135: error: ‘ByteOrder’ has not been declared
>   130 |       inline void store (const ValueType value, void* address, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { *as<ValueType>(address) = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                       ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_native(ValueType, void*)’:
> ./core/raw.h:133:74: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   133 |       inline void store_native (const ValueType value, void* address) { *as<ValueType>(address) = value; }
>       |                                                                          ^~
>       |                                                                          Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:133:86: error: expected primary-expression before ‘>’ token
>   133 |       inline void store_native (const ValueType value, void* address) { *as<ValueType>(address) = value; }
>       |                                                                                      ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_LE(const void*, std::size_t)’:
> ./core/raw.h:139:71: error: ‘ByteOrder’ has not been declared
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                       ^~~~~~~~~
> ./core/raw.h:139:86: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                      ^~
>       |                                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:139:98: error: expected primary-expression before ‘>’ token
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                                  ^
> ./core/raw.h:139:107: error: ‘const void*’ is not a pointer-to-object type
>   139 |       inline ValueType fetch_LE (const void* data, size_t i) { return ByteOrder::LE (as<ValueType>(data)[i]); }
>       |                                                                                                           ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_BE(const void*, std::size_t)’:
> ./core/raw.h:143:71: error: ‘ByteOrder’ has not been declared
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                       ^~~~~~~~~
> ./core/raw.h:143:86: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                      ^~
>       |                                                                                      Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:143:98: error: expected primary-expression before ‘>’ token
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                                  ^
> ./core/raw.h:143:107: error: ‘const void*’ is not a pointer-to-object type
>   143 |       inline ValueType fetch_BE (const void* data, size_t i) { return ByteOrder::BE (as<ValueType>(data)[i]); }
>       |                                                                                                           ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch(const void*, std::size_t, bool)’:
> ./core/raw.h:147:111: error: ‘ByteOrder’ has not been declared
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                               ^~~~~~~~~
> ./core/raw.h:147:128: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                ^~
>       |                                                                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:147:140: error: expected primary-expression before ‘>’ token
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                            ^
> ./core/raw.h:147:149: error: ‘const void*’ is not a pointer-to-object type
>   147 |       inline ValueType fetch (const void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { return ByteOrder::swap (as<ValueType>(data)[i], is_big_endian); }
>       |                                                                                                                                                     ^
> ./core/raw.h: In function ‘ValueType Eigen::fetch_native(const void*, std::size_t)’:
> ./core/raw.h:151:75: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                           ^~
>       |                                                                           Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:151:87: error: expected primary-expression before ‘>’ token
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                                       ^
> ./core/raw.h:151:96: error: ‘const void*’ is not a pointer-to-object type
>   151 |       inline ValueType fetch_native (const void* data, size_t i) { return as<ValueType>(data)[i]; }
>       |                                                                                                ^
> ./core/raw.h: In function ‘void Eigen::store_LE(ValueType, void*, std::size_t)’:
> ./core/raw.h:157:76: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                            ^~
>       |                                                                            Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:157:88: error: expected primary-expression before ‘>’ token
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                        ^
> ./core/raw.h:157:97: error: ‘void*’ is not a pointer-to-object type
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                                 ^
> ./core/raw.h:157:101: error: ‘ByteOrder’ has not been declared
>   157 |       inline void store_LE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::LE (value); }
>       |                                                                                                     ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_BE(ValueType, void*, std::size_t)’:
> ./core/raw.h:161:76: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                            ^~
>       |                                                                            Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:161:88: error: expected primary-expression before ‘>’ token
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                        ^
> ./core/raw.h:161:97: error: ‘void*’ is not a pointer-to-object type
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                                 ^
> ./core/raw.h:161:101: error: ‘ByteOrder’ has not been declared
>   161 |       inline void store_BE (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = ByteOrder::BE (value); }
>       |                                                                                                     ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store(ValueType, void*, std::size_t, bool)’:
> ./core/raw.h:165:116: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                    ^~
>       |                                                                                                                    Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:165:128: error: expected primary-expression before ‘>’ token
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                ^
> ./core/raw.h:165:137: error: ‘void*’ is not a pointer-to-object type
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                         ^
> ./core/raw.h:165:141: error: ‘ByteOrder’ has not been declared
>   165 |       inline void store (const ValueType value, void* data, size_t i, bool is_big_endian = MRTRIX_IS_BIG_ENDIAN) { as<ValueType>(data)[i] = ByteOrder::swap (value, is_big_endian); }
>       |                                                                                                                                             ^~~~~~~~~
> ./core/raw.h: In function ‘void Eigen::store_native(ValueType, void*, std::size_t)’:
> ./core/raw.h:169:80: error: ‘as’ was not declared in this scope; did you mean ‘Eigen::as’?
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                ^~
>       |                                                                                Eigen::as
> ./core/raw.h:105:54: note: ‘Eigen::as’ declared here
>   105 |       template <typename ValueType> const ValueType* as (const void* p) { return reinterpret_cast<const ValueType*> (p); }
>       |                                                      ^~
> ./core/raw.h:169:92: error: expected primary-expression before ‘>’ token
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                            ^
> ./core/raw.h:169:101: error: ‘void*’ is not a pointer-to-object type
>   169 |       inline void store_native (const ValueType value, void* data, size_t i) { as<ValueType>(data)[i] = value; }
>       |                                                                                                     ^
> ./core/raw.h: At global scope:
> ./core/raw.h:176:31: error: expected initializer before ‘<’ token
>   176 |       inline bool fetch_native<bool> (const void* data, size_t i) { return ( as<uint8_t>(data)[i/8]) & (BITMASK >> i%8 ); }
>       |                               ^
> ./core/raw.h:179:31: error: expected initializer before ‘<’ token
>   179 |       inline void store_native<bool> (const bool value, void* data, size_t i) {
>       |                               ^
> ./core/raw.h:193:24: error: expected initializer before ‘<’ token
>   193 |       inline bool fetch<bool> (const void* data, size_t i, bool) { return fetch_native<bool> (data, i); }
>       |                        ^
> ./core/raw.h:196:24: error: expected initializer before ‘<’ token
>   196 |       inline void store<bool> (const bool value, void* data, size_t i, bool) { store_native<bool> (value, data, i); }
>       |                        ^
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:47:66: error: ‘Entry’ does not name a type
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                                                                  ^~~~~
> ./core/file/entry.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’:
> ./core/file/entry.h:49:41: error: request for member ‘name’ in ‘e’, which is of non-class type ‘const int’
>    49 |       stream << "File::Entry { \"" << e.name << "\", offset " << e.start << " }";
>       |                                         ^~~~
> ./core/file/entry.h:49:68: error: request for member ‘start’ in ‘e’, which is of non-class type ‘const int’
>    49 |       stream << "File::Entry { \"" << e.name << "\", offset " << e.start << " }";
>       |                                                                    ^~~~~
> In file included from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/mmap.h: At global scope:
> ./core/file/mmap.h:32:34: error: expected class-name before ‘{’ token
>    32 |     class MMap : protected Entry { NOMEMALIGN
>       |                                  ^
> ./core/file/mmap.h:55:21: error: ‘Entry’ does not name a type
>    55 |         MMap (const Entry& entry, bool readwrite = false, bool preload = true, int64_t mapped_size = -1);
>       |                     ^~~~~
> ./core/file/mmap.h: In member function ‘std::string MR::File::MMap::name() const’:
> ./core/file/mmap.h:59:18: error: ‘Entry’ has not been declared
>    59 |           return Entry::name;
>       |                  ^~~~~
> ./core/file/mmap.h: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const MR::File::MMap&)’:
> ./core/file/mmap.h:77:57: error: ambiguous overload for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const int’)
>    77 |           stream << "File::MMap { " << m.name() << " [" << m.fd << "], size: "
>       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~
>       |                                                 |            |
>       |                                                 |            const int
>       |                                                 std::basic_ostream<char>
> In file included from /usr/include/c++/11/iostream:39,
>                  from ./core/exception.h:21,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/ostream:166:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   166 |       operator<<(long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:170:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   170 |       operator<<(unsigned long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:174:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   174 |       operator<<(bool __n)
>       |       ^~~~~~~~
> In file included from /usr/include/c++/11/ostream:829,
>                  from /usr/include/c++/11/iostream:39,
>                  from ./core/exception.h:21,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/ostream.tcc:91:5: note: candidate: ‘std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char; _Traits = std::char_traits<char>]’
>    91 |     basic_ostream<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/iostream:39,
>                  from ./core/exception.h:21,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/ostream:181:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   181 |       operator<<(unsigned short __n)
>       |       ^~~~~~~~
> In file included from /usr/include/c++/11/ostream:829,
>                  from /usr/include/c++/11/iostream:39,
>                  from ./core/exception.h:21,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/ostream.tcc:105:5: note: candidate: ‘std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char; _Traits = std::char_traits<char>]’
>   105 |     basic_ostream<_CharT, _Traits>::
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/include/c++/11/iostream:39,
>                  from ./core/exception.h:21,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/ostream:192:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   192 |       operator<<(unsigned int __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:201:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   201 |       operator<<(long long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:205:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   205 |       operator<<(unsigned long long __n)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:220:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   220 |       operator<<(double __f)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:224:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   224 |       operator<<(float __f)
>       |       ^~~~~~~~
> /usr/include/c++/11/ostream:232:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]’
>   232 |       operator<<(long double __f)
>       |       ^~~~~~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:47:26: note: candidate: ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                          ^~~~~~~~
> In file included from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/mmap.h:79:71: error: ‘const class MR::File::MMap’ has no member named ‘start’
>    79 |                  << " at " << (void*) m.address() << ", offset " << m.start << " }";
>       |                                                                       ^~~~~
> ./core/file/mmap.h: In copy constructor ‘MR::File::MMap::MMap(const MR::File::MMap&)’:
> ./core/file/mmap.h:94:35: error: class ‘MR::File::MMap’ does not have any field named ‘Entry’
>    94 |         MMap (const MMap& mmap) : Entry (mmap), fd (0), addr (NULL), first (NULL), msize (0), mtime (0), readwrite (false) {
>       |                                   ^~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: In constructor ‘MR::File::Dicom::Date::Date(const string&)’:
> ./core/file/dicom/element.h:45:22: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>    45 |               year = to<uint32_t> (entry.substr (0, 4));
>       |                      ^~
>       |                      Eigen::to
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:45:33: error: expected primary-expression before ‘>’ token
>    45 |               year = to<uint32_t> (entry.substr (0, 4));
>       |                                 ^
> ./core/file/dicom/element.h:46:34: error: expected primary-expression before ‘>’ token
>    46 |               month = to<uint32_t> (entry.substr (4, 2));
>       |                                  ^
> ./core/file/dicom/element.h:47:32: error: expected primary-expression before ‘>’ token
>    47 |               day = to<uint32_t> (entry.substr (6, 2));
>       |                                ^
> ./core/file/dicom/element.h:50:21: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    50 |               throw Exception ("Error converting string \"" + entry + "\" to date");
>       |                     ^~~~~~~~~
>       |                     MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: At global scope:
> ./core/file/dicom/element.h:66:29: error: expected ‘)’ before ‘i’
>    66 |           Time (default_type i)
>       |                ~            ^~
>       |                             )
> ./core/file/dicom/element.h:78:20: error: expected type-specifier before ‘default_type’
>    78 |           operator default_type() const { return (hour*3600.0 + minute*60 + second + fraction); }
>       |                    ^~~~~~~~~~~~
> ./core/file/dicom/element.h:81:11: error: ‘default_type’ does not name a type
>    81 |           default_type fraction;
>       |           ^~~~~~~~~~~~
> ./core/file/dicom/element.h: In constructor ‘MR::File::Dicom::Time::Time(const string&)’:
> ./core/file/dicom/element.h:60:21: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    60 |               throw Exception ("field \"" + entry + "\" is too short to be interpreted as a time");
>       |                     ^~~~~~~~~
>       |                     MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:61:21: error: ‘to’ was not declared in this scope; did you mean ‘Eigen::to’?
>    61 |             hour  = to<uint32_t> (entry.substr (0, 2));
>       |                     ^~
>       |                     Eigen::to
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:260:31: note: ‘Eigen::to’ declared here
>   260 |   template <class T> inline T to (const std::string& string)
>       |                               ^~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:61:32: error: expected primary-expression before ‘>’ token
>    61 |             hour  = to<uint32_t> (entry.substr (0, 2));
>       |                                ^
> ./core/file/dicom/element.h:62:33: error: expected primary-expression before ‘>’ token
>    62 |             minute = to<uint32_t> (entry.substr (2, 2));
>       |                                 ^
> ./core/file/dicom/element.h:63:33: error: expected primary-expression before ‘>’ token
>    63 |             second = to<uint32_t> (entry.substr (4, 2));
>       |                                 ^
> ./core/file/dicom/element.h:64:13: error: ‘fraction’ was not declared in this scope
>    64 |             fraction = entry.size() > 6 ? to<default_type> (entry.substr (6)) : 0.0;
>       |             ^~~~~~~~
> ./core/file/dicom/element.h:64:46: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    64 |             fraction = entry.size() > 6 ? to<default_type> (entry.substr (6)) : 0.0;
>       |                                              ^~~~~~~~~~~~
>       |                                              MR::default_type
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: In constructor ‘MR::File::Dicom::Time::Time()’:
> ./core/file/dicom/element.h:77:55: error: class ‘MR::File::Dicom::Time’ does not have any field named ‘fraction’
>    77 |           Time () : hour (0), minute (0), second (0), fraction (0.0) { }
>       |                                                       ^~~~~~~~
> ./core/file/dicom/element.h: In member function ‘MR::File::Dicom::Time MR::File::Dicom::Time::operator-(const MR::File::Dicom::Time&) const’:
> ./core/file/dicom/element.h:79:63: error: ‘default_type’ was not declared in this scope; did you mean ‘MR::default_type’?
>    79 |           Time operator- (const Time& t) const { return Time (default_type (*this) - default_type (t)); }
>       |                                                               ^~~~~~~~~~~~
>       |                                                               MR::default_type
> In file included from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/types.h:228:9: note: ‘MR::default_type’ declared here
>   228 |   using default_type = double;
>       |         ^~~~~~~~~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: At global scope:
> ./core/file/dicom/element.h:106:11: error: ‘vector’ does not name a type
>   106 |           vector<Sequence> parents;
>       |           ^~~~~~
> ./core/file/dicom/element.h:147:11: error: ‘vector’ does not name a type
>   147 |           vector<int32_t> get_int () const;
>       |           ^~~~~~
> ./core/file/dicom/element.h:148:11: error: ‘vector’ does not name a type
>   148 |           vector<uint32_t> get_uint () const;
>       |           ^~~~~~
> ./core/file/dicom/element.h:149:11: error: ‘vector’ does not name a type
>   149 |           vector<default_type> get_float () const;
>       |           ^~~~~~
> ./core/file/dicom/element.h:150:11: error: ‘Date’ does not name a type
>   150 |           Date get_date () const;
>       |           ^~~~
> ./core/file/dicom/element.h:151:11: error: ‘Time’ does not name a type
>   151 |           Time get_time () const;
>       |           ^~~~
> ./core/file/dicom/element.h:152:11: error: ‘vector’ does not name a type
>   152 |           vector<std::string> get_string () const;
>       |           ^~~~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:178:27: error: ‘File’ was not declared in this scope; did you mean ‘MR::File’?
>   178 |           std::unique_ptr<File::MMap> fmap;
>       |                           ^~~~
>       |                           MR::File
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:26:13: note: ‘MR::File’ declared here
>    26 |   namespace File
>       |             ^~~~
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:178:37: error: template argument 1 is invalid
>   178 |           std::unique_ptr<File::MMap> fmap;
>       |                                     ^
> ./core/file/dicom/element.h:178:37: error: template argument 2 is invalid
> ./core/file/dicom/element.h:186:11: error: ‘vector’ does not name a type
>   186 |           vector<uint8_t*>  end_seq;
>       |           ^~~~~~
> ./core/file/dicom/element.h:197:58: error: template argument 3 is invalid
>   197 |           static std::unordered_map<uint32_t, const char*> dict;
>       |                                                          ^
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: In member function ‘std::string MR::File::Dicom::Element::tag_name() const’:
> ./core/file/dicom/element.h:119:22: error: request for member ‘empty’ in ‘MR::File::Dicom::Element::dict’, which is of non-class type ‘int’
>   119 |             if (dict.empty()) init_dict();
>       |                      ^~~~~
> ./core/file/dicom/element.h:120:33: error: invalid types ‘int[uint32_t {aka unsigned int}]’ for array subscript
>   120 |             const char* s = dict[tag()];
>       |                                 ^
> ./core/file/dicom/element.h: In member function ‘std::size_t MR::File::Dicom::Element::offset(uint8_t*) const’:
> ./core/file/dicom/element.h:137:34: error: base operand of ‘->’ is not a pointer
>   137 |             return address - fmap->address();
>       |                                  ^~
> ./core/file/dicom/element.h: In member function ‘int32_t MR::File::Dicom::Element::get_int(std::size_t, int32_t) const’:
> ./core/file/dicom/element.h:154:113: error: no matching function for call to ‘MR::File::Dicom::Element::get_int() const’
>   154 |           int32_t     get_int (size_t idx, int32_t default_value = 0)                    const { auto v (get_int());    return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                                                                                                          ~~~~~~~^~
> ./core/file/dicom/element.h:154:23: note: candidate: ‘int32_t MR::File::Dicom::Element::get_int(std::size_t, int32_t) const’
>   154 |           int32_t     get_int (size_t idx, int32_t default_value = 0)                    const { auto v (get_int());    return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                       ^~~~~~~
> ./core/file/dicom/element.h:154:23: note:   candidate expects 2 arguments, 0 provided
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h: In member function ‘uint32_t MR::File::Dicom::Element::get_uint(std::size_t, uint32_t) const’:
> ./core/file/dicom/element.h:155:114: error: no matching function for call to ‘MR::File::Dicom::Element::get_uint() const’
>   155 |           uint32_t    get_uint (size_t idx, uint32_t default_value = 0)                  const { auto v (get_uint());   return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                                                                                                          ~~~~~~~~^~
> ./core/file/dicom/element.h:155:23: note: candidate: ‘uint32_t MR::File::Dicom::Element::get_uint(std::size_t, uint32_t) const’
>   155 |           uint32_t    get_uint (size_t idx, uint32_t default_value = 0)                  const { auto v (get_uint());   return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                       ^~~~~~~~
> ./core/file/dicom/element.h:155:23: note:   candidate expects 2 arguments, 0 provided
> ./core/file/dicom/element.h: In member function ‘double MR::File::Dicom::Element::get_float(std::size_t, double) const’:
> ./core/file/dicom/element.h:156:115: error: no matching function for call to ‘MR::File::Dicom::Element::get_float() const’
>   156 |           double      get_float (size_t idx, double default_value = 0.0)                 const { auto v (get_float());  return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                                                                                                          ~~~~~~~~~^~
> ./core/file/dicom/element.h:156:23: note: candidate: ‘double MR::File::Dicom::Element::get_float(std::size_t, double) const’
>   156 |           double      get_float (size_t idx, double default_value = 0.0)                 const { auto v (get_float());  return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                       ^~~~~~~~~
> ./core/file/dicom/element.h:156:23: note:   candidate expects 2 arguments, 0 provided
> ./core/file/dicom/element.h: In member function ‘std::string MR::File::Dicom::Element::get_string(std::size_t, std::string) const’:
> ./core/file/dicom/element.h:157:116: error: no matching function for call to ‘MR::File::Dicom::Element::get_string() const’
>   157 |           std::string get_string (size_t idx, std::string default_value = std::string()) const { auto v (get_string()); return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                                                                                                          ~~~~~~~~~~^~
> ./core/file/dicom/element.h:157:23: note: candidate: ‘std::string MR::File::Dicom::Element::get_string(std::size_t, std::string) const’
>   157 |           std::string get_string (size_t idx, std::string default_value = std::string()) const { auto v (get_string()); return check_get (idx, v.size()) ? v[idx] : default_value; }
>       |                       ^~~~~~~~~~
> ./core/file/dicom/element.h:157:23: note:   candidate expects 2 arguments, 0 provided
> ./core/file/dicom/element.h: In member function ‘std::size_t MR::File::Dicom::Element::level() const’:
> ./core/file/dicom/element.h:161:42: error: ‘parents’ was not declared in this scope
>   161 |           size_t level () const { return parents.size(); }
>       |                                          ^~~~~~~
> ./core/file/dicom/element.h: In member function ‘uint16_t MR::File::Dicom::Element::get_VR_from_tag_name(const string&)’:
> ./core/file/dicom/element.h:194:20: error: ‘ByteOrder’ has not been declared
>   194 |             return ByteOrder::BE (d.i);
>       |                    ^~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:27:61: error: ‘Date’ does not name a type
>    27 |       std::ostream& operator<< (std::ostream& stream, const Date& item)
>       |                                                             ^~~~
> core/file/dicom/element.cpp:27:21: error: redefinition of ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’
>    27 |       std::ostream& operator<< (std::ostream& stream, const Date& item)
>       |                     ^~~~~~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:47:26: note: ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’ previously defined here
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                          ^~~~~~~~
> core/file/dicom/element.cpp: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’:
> core/file/dicom/element.cpp:29:24: error: request for member ‘year’ in ‘item’, which is of non-class type ‘const int’
>    29 |         stream << item.year << "/"
>       |                        ^~~~
> core/file/dicom/element.cpp:30:24: error: ‘setfill’ is not a member of ‘std’; did you mean ‘fill’?
>    30 |                << std::setfill('0') << std::setw(2) << item.month << "/"
>       |                        ^~~~~~~
>       |                        fill
> core/file/dicom/element.cpp:30:45: error: ‘setw’ is not a member of ‘std’
>    30 |                << std::setfill('0') << std::setw(2) << item.month << "/"
>       |                                             ^~~~
> core/file/dicom/element.cpp:30:61: error: request for member ‘month’ in ‘item’, which is of non-class type ‘const int’
>    30 |                << std::setfill('0') << std::setw(2) << item.month << "/"
>       |                                                             ^~~~~
> core/file/dicom/element.cpp:31:24: error: ‘setfill’ is not a member of ‘std’; did you mean ‘fill’?
>    31 |                << std::setfill('0') << std::setw(2) << item.day;
>       |                        ^~~~~~~
>       |                        fill
> core/file/dicom/element.cpp:31:45: error: ‘setw’ is not a member of ‘std’
>    31 |                << std::setfill('0') << std::setw(2) << item.day;
>       |                                             ^~~~
> core/file/dicom/element.cpp:31:61: error: request for member ‘day’ in ‘item’, which is of non-class type ‘const int’
>    31 |                << std::setfill('0') << std::setw(2) << item.day;
>       |                                                             ^~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:39:61: error: ‘Time’ does not name a type
>    39 |       std::ostream& operator<< (std::ostream& stream, const Time& item)
>       |                                                             ^~~~
> core/file/dicom/element.cpp:39:21: error: redefinition of ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’
>    39 |       std::ostream& operator<< (std::ostream& stream, const Time& item)
>       |                     ^~~~~~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:47:26: note: ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’ previously defined here
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                          ^~~~~~~~
> core/file/dicom/element.cpp: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’:
> core/file/dicom/element.cpp:41:24: error: ‘setfill’ is not a member of ‘std’; did you mean ‘fill’?
>    41 |         stream << std::setfill('0') << std::setw(2) << item.hour << ":"
>       |                        ^~~~~~~
>       |                        fill
> core/file/dicom/element.cpp:41:45: error: ‘setw’ is not a member of ‘std’
>    41 |         stream << std::setfill('0') << std::setw(2) << item.hour << ":"
>       |                                             ^~~~
> core/file/dicom/element.cpp:41:61: error: request for member ‘hour’ in ‘item’, which is of non-class type ‘const int’
>    41 |         stream << std::setfill('0') << std::setw(2) << item.hour << ":"
>       |                                                             ^~~~
> core/file/dicom/element.cpp:42:24: error: ‘setfill’ is not a member of ‘std’; did you mean ‘fill’?
>    42 |                << std::setfill('0') << std::setw(2) << item.minute << ":"
>       |                        ^~~~~~~
>       |                        fill
> core/file/dicom/element.cpp:42:45: error: ‘setw’ is not a member of ‘std’
>    42 |                << std::setfill('0') << std::setw(2) << item.minute << ":"
>       |                                             ^~~~
> core/file/dicom/element.cpp:42:61: error: request for member ‘minute’ in ‘item’, which is of non-class type ‘const int’
>    42 |                << std::setfill('0') << std::setw(2) << item.minute << ":"
>       |                                                             ^~~~~~
> core/file/dicom/element.cpp:43:24: error: ‘setfill’ is not a member of ‘std’; did you mean ‘fill’?
>    43 |                << std::setfill('0') << std::setw(2) << item.second;
>       |                        ^~~~~~~
>       |                        fill
> core/file/dicom/element.cpp:43:45: error: ‘setw’ is not a member of ‘std’
>    43 |                << std::setfill('0') << std::setw(2) << item.second;
>       |                                             ^~~~
> core/file/dicom/element.cpp:43:61: error: request for member ‘second’ in ‘item’, which is of non-class type ‘const int’
>    43 |                << std::setfill('0') << std::setw(2) << item.second;
>       |                                                             ^~~~~~
> core/file/dicom/element.cpp:44:18: error: request for member ‘fraction’ in ‘item’, which is of non-class type ‘const int’
>    44 |         if (item.fraction)
>       |                  ^~~~~~~~
> core/file/dicom/element.cpp:45:30: error: request for member ‘fraction’ in ‘item’, which is of non-class type ‘const int’
>    45 |           stream << str(item.fraction, 6).substr(1);
>       |                              ^~~~~~~~
> core/file/dicom/element.cpp:45:21: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>    45 |           stream << str(item.fraction, 6).substr(1);
>       |                     ^~~
>       |                     Eigen::str
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:53:19: error: ‘Element’ has not been declared
>    53 |       const char* Element::type_as_str[] = { "invalid",
>       |                   ^~~~~~~
> core/file/dicom/element.cpp:69:12: error: ‘Element’ has not been declared
>    69 |       void Element::set (const std::string& filename, bool force_read, bool read_write)
>       |            ^~~~~~~
> core/file/dicom/element.cpp: In function ‘void Eigen::set(const string&, bool, bool)’:
> core/file/dicom/element.cpp:71:9: error: ‘group’ was not declared in this scope
>    71 |         group = element = VR = 0;
>       |         ^~~~~
> core/file/dicom/element.cpp:71:17: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>    71 |         group = element = VR = 0;
>       |                 ^~~~~~~
>       |                 Element
> core/file/dicom/element.cpp:71:27: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>    71 |         group = element = VR = 0;
>       |                           ^~
>       |                           MR
> core/file/dicom/element.cpp:72:9: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>    72 |         size = 0;
>       |         ^~~~
>       |         Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:73:9: error: ‘start’ was not declared in this scope; did you mean ‘stat’?
>    73 |         start = data = next = NULL;
>       |         ^~~~~
>       |         stat
> core/file/dicom/element.cpp:73:17: error: ‘data’ was not declared in this scope
>    73 |         start = data = next = NULL;
>       |                 ^~~~
> core/file/dicom/element.cpp:73:24: error: ‘next’ was not declared in this scope; did you mean ‘std::next’?
>    73 |         start = data = next = NULL;
>       |                        ^~~~
>       |                        std::next
> In file included from /usr/include/c++/11/bits/stl_algobase.h:66,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_funcs.h:213:5: note: ‘std::next’ declared here
>   213 |     next(_InputIterator __x, typename
>       |     ^~~~
> core/file/dicom/element.cpp:74:9: error: ‘is_BE’ was not declared in this scope
>    74 |         is_BE = is_transfer_syntax_BE = false;
>       |         ^~~~~
> core/file/dicom/element.cpp:74:17: error: ‘is_transfer_syntax_BE’ was not declared in this scope
>    74 |         is_BE = is_transfer_syntax_BE = false;
>       |                 ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:75:9: error: ‘transfer_syntax_supported’ was not declared in this scope
>    75 |         transfer_syntax_supported = true;
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:76:9: error: ‘parents’ was not declared in this scope
>    76 |         parents.clear();
>       |         ^~~~~~~
> core/file/dicom/element.cpp:78:9: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>    78 |         fmap.reset (new File::MMap (filename, read_write));
>       |         ^~~~
>       |         fmax
> core/file/dicom/element.cpp:78:25: error: ‘File’ does not name a type
>    78 |         fmap.reset (new File::MMap (filename, read_write));
>       |                         ^~~~
> core/file/dicom/element.cpp:81:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    81 |           throw Exception ("\"" + fmap->name() + "\" is too small to be a valid DICOM file");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:86:11: error: ‘is_explicit’ was not declared in this scope
>    86 |           is_explicit = false;
>       |           ^~~~~~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:87:11: note: in expansion of macro ‘DEBUG’
>    87 |           DEBUG ("DICOM magic number not found in file \"" + fmap->name() + "\" - trying truncated format");
>       |           ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:89:18: error: ‘Path’ has not been declared
>    89 |             if (!Path::has_suffix (fmap->name(), ".dcm"))
>       |                  ^~~~
> core/file/dicom/element.cpp:90:21: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    90 |               throw Exception ("file \"" + fmap->name() + "\" does not have the DICOM magic number or the .dcm extension - assuming not DICOM");
>       |                     ^~~~~~~~~
>       |                     MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:94:15: error: ‘set_explicit_encoding’ was not declared in this scope
>    94 |         try { set_explicit_encoding(); }
>       |               ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:95:16: error: ‘Exception’ does not name a type
>    95 |         catch (Exception) {
>       |                ^~~~~~~~~
> core/file/dicom/element.cpp:96:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>    96 |           throw Exception ("\"" + fmap->name() + "\" is not a valid DICOM file");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:106:12: error: ‘Element’ has not been declared
>   106 |       void Element::set_explicit_encoding ()
>       |            ^~~~~~~
> core/file/dicom/element.cpp: In function ‘void Eigen::set_explicit_encoding()’:
> core/file/dicom/element.cpp:109:13: error: ‘read_GR_EL’ was not declared in this scope
>   109 |         if (read_GR_EL())
>       |             ^~~~~~~~~~
> core/file/dicom/element.cpp:110:35: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   110 |           throw Exception ("\"" + fmap->name() + "\" is too small to be DICOM");
>       |                                   ^~~~
>       |                                   fmax
> core/file/dicom/element.cpp:110:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   110 |           throw Exception ("\"" + fmap->name() + "\" is too small to be DICOM");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:112:9: error: ‘is_explicit’ was not declared in this scope
>   112 |         is_explicit = true;
>       |         ^~~~~~~~~~~
> core/file/dicom/element.cpp:113:9: error: ‘next’ was not declared in this scope; did you mean ‘std::next’?
>   113 |         next = start;
>       |         ^~~~
>       |         std::next
> In file included from /usr/include/c++/11/bits/stl_algobase.h:66,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_funcs.h:213:5: note: ‘std::next’ declared here
>   213 |     next(_InputIterator __x, typename
>       |     ^~~~
> core/file/dicom/element.cpp:113:16: error: ‘start’ was not declared in this scope; did you mean ‘stat’?
>   113 |         next = start;
>       |                ^~~~~
>       |                stat
> core/file/dicom/element.cpp:114:9: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   114 |         VR = ByteOrder::BE (*reinterpret_cast<uint16_t*> (start+4));
>       |         ^~
>       |         MR
> core/file/dicom/element.cpp:114:14: error: ‘ByteOrder’ has not been declared
>   114 |         VR = ByteOrder::BE (*reinterpret_cast<uint16_t*> (start+4));
>       |              ^~~~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:124:9: note: in expansion of macro ‘DEBUG’
>   124 |         DEBUG ("using implicit DICOM encoding");
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:133:12: error: ‘Element’ has not been declared
>   133 |       bool Element::read_GR_EL ()
>       |            ^~~~~~~
> core/file/dicom/element.cpp: In function ‘bool Eigen::read_GR_EL()’:
> core/file/dicom/element.cpp:135:9: error: ‘group’ was not declared in this scope
>   135 |         group = element = VR = 0;
>       |         ^~~~~
> core/file/dicom/element.cpp:135:17: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   135 |         group = element = VR = 0;
>       |                 ^~~~~~~
>       |                 Element
> core/file/dicom/element.cpp:135:27: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   135 |         group = element = VR = 0;
>       |                           ^~
>       |                           MR
> core/file/dicom/element.cpp:136:9: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   136 |         size = 0;
>       |         ^~~~
>       |         Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:137:9: error: ‘start’ was not declared in this scope; did you mean ‘stat’?
>   137 |         start = next;
>       |         ^~~~~
>       |         stat
> core/file/dicom/element.cpp:137:17: error: ‘next’ was not declared in this scope; did you mean ‘std::next’?
>   137 |         start = next;
>       |                 ^~~~
>       |                 std::next
> In file included from /usr/include/c++/11/bits/stl_algobase.h:66,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_funcs.h:213:5: note: ‘std::next’ declared here
>   213 |     next(_InputIterator __x, typename
>       |     ^~~~
> core/file/dicom/element.cpp:138:9: error: ‘data’ was not declared in this scope
>   138 |         data = next = NULL;
>       |         ^~~~
> core/file/dicom/element.cpp:140:21: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   140 |         if (start < fmap->address())
>       |                     ^~~~
>       |                     fmax
> core/file/dicom/element.cpp:141:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   141 |           throw Exception ("invalid DICOM element");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:143:25: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   143 |         if (start + 8 > fmap->address() + fmap->size())
>       |                         ^~~~
>       |                         fmax
> core/file/dicom/element.cpp:146:9: error: ‘is_BE’ was not declared in this scope
>   146 |         is_BE = is_transfer_syntax_BE;
>       |         ^~~~~
> core/file/dicom/element.cpp:146:17: error: ‘is_transfer_syntax_BE’ was not declared in this scope
>   146 |         is_BE = is_transfer_syntax_BE;
>       |                 ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:148:17: error: ‘Raw’ has not been declared
>   148 |         group = Raw::fetch_<uint16_t> (start, is_BE);
>       |                 ^~~
> core/file/dicom/element.cpp:148:37: error: expected primary-expression before ‘>’ token
>   148 |         group = Raw::fetch_<uint16_t> (start, is_BE);
>       |                                     ^
> core/file/dicom/element.cpp:152:58: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   152 |             throw Exception ("invalid DICOM group ID " + str (group) + " in file \"" + fmap->name() + "\"");
>       |                                                          ^~~
>       |                                                          Eigen::str
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> core/file/dicom/element.cpp:152:88: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   152 |             throw Exception ("invalid DICOM group ID " + str (group) + " in file \"" + fmap->name() + "\"");
>       |                                                                                        ^~~~
>       |                                                                                        fmax
> core/file/dicom/element.cpp:152:19: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   152 |             throw Exception ("invalid DICOM group ID " + str (group) + " in file \"" + fmap->name() + "\"");
>       |                   ^~~~~~~~~
>       |                   MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:157:19: error: ‘Raw’ has not been declared
>   157 |         element = Raw::fetch_<uint16_t> (start+2, is_BE);
>       |                   ^~~
> core/file/dicom/element.cpp:157:39: error: expected primary-expression before ‘>’ token
>   157 |         element = Raw::fetch_<uint16_t> (start+2, is_BE);
>       |                                       ^
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:167:12: error: ‘Element’ has not been declared
>   167 |       bool Element::read ()
>       |            ^~~~~~~
> core/file/dicom/element.cpp: In function ‘bool Eigen::read()’:
> core/file/dicom/element.cpp:169:13: error: ‘read_GR_EL’ was not declared in this scope; did you mean ‘Eigen::read_GR_EL’?
>   169 |         if (read_GR_EL())
>       |             ^~~~~~~~~~
>       |             Eigen::read_GR_EL
> core/file/dicom/element.cpp:133:12: note: ‘Eigen::read_GR_EL’ declared here
>   133 |       bool Element::read_GR_EL ()
>       |            ^~~~~~~
> core/file/dicom/element.cpp:172:9: error: ‘data’ was not declared in this scope
>   172 |         data = start + 8;
>       |         ^~~~
> core/file/dicom/element.cpp:172:16: error: ‘start’ was not declared in this scope; did you mean ‘stat’?
>   172 |         data = start + 8;
>       |                ^~~~~
>       |                stat
> core/file/dicom/element.cpp:173:14: error: ‘is_explicit’ was not declared in this scope
>   173 |         if ((is_explicit && group != GROUP_SEQUENCE) || group == GROUP_BYTE_ORDER) {
>       |              ^~~~~~~~~~~
> core/file/dicom/element.cpp:173:29: error: ‘group’ was not declared in this scope
>   173 |         if ((is_explicit && group != GROUP_SEQUENCE) || group == GROUP_BYTE_ORDER) {
>       |                             ^~~~~
> core/file/dicom/element.cpp:176:11: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   176 |           VR = ByteOrder::BE (*reinterpret_cast<uint16_t*> (start+4));
>       |           ^~
>       |           MR
> core/file/dicom/element.cpp:176:16: error: ‘ByteOrder’ has not been declared
>   176 |           VR = ByteOrder::BE (*reinterpret_cast<uint16_t*> (start+4));
>       |                ^~~~~~~~~
> core/file/dicom/element.cpp:178:13: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   178 |             size = Raw::fetch_<uint32_t> (start+8, is_BE);
>       |             ^~~~
>       |             Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:178:20: error: ‘Raw’ has not been declared
>   178 |             size = Raw::fetch_<uint32_t> (start+8, is_BE);
>       |                    ^~~
> core/file/dicom/element.cpp:178:40: error: expected primary-expression before ‘>’ token
>   178 |             size = Raw::fetch_<uint32_t> (start+8, is_BE);
>       |                                        ^
> core/file/dicom/element.cpp:178:52: error: ‘is_BE’ was not declared in this scope
>   178 |             size = Raw::fetch_<uint32_t> (start+8, is_BE);
>       |                                                    ^~~~~
> core/file/dicom/element.cpp:181:16: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   181 |           else size = Raw::fetch_<uint16_t> (start+6, is_BE);
>       |                ^~~~
>       |                Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:181:23: error: ‘Raw’ has not been declared
>   181 |           else size = Raw::fetch_<uint16_t> (start+6, is_BE);
>       |                       ^~~
> core/file/dicom/element.cpp:181:43: error: expected primary-expression before ‘>’ token
>   181 |           else size = Raw::fetch_<uint16_t> (start+6, is_BE);
>       |                                           ^
> core/file/dicom/element.cpp:181:55: error: ‘is_BE’ was not declared in this scope
>   181 |           else size = Raw::fetch_<uint16_t> (start+6, is_BE);
>       |                                                       ^~~~~
> core/file/dicom/element.cpp:186:32: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   186 |             std::string name = tag_name();
>       |                                ^~~~~~~~
>       |                                tzname
> core/file/dicom/element.cpp:188:20: error: ‘get_VR_from_tag_name’ was not declared in this scope
>   188 |               VR = get_VR_from_tag_name (name);
>       |                    ^~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:194:30: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   194 |           std::string name = tag_name();
>       |                              ^~~~~~~~
>       |                              tzname
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:197:63: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   197 |                   "with implicit encoding in file \"", group, element)
>       |                                                               ^~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:198:19: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   198 |                 + fmap->name() + "\"");
>       |                   ^~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:196:13: note: in expansion of macro ‘DEBUG’
>   196 |             DEBUG (printf ("WARNING: unknown DICOM tag (%04X %04X) "
>       |             ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:199:13: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   199 |             VR = VR_UN;
>       |             ^~
>       |             MR
> core/file/dicom/element.cpp:202:13: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   202 |             VR = get_VR_from_tag_name (name);
>       |             ^~
>       |             MR
> core/file/dicom/element.cpp:202:18: error: ‘get_VR_from_tag_name’ was not declared in this scope
>   202 |             VR = get_VR_from_tag_name (name);
>       |                  ^~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:203:11: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   203 |           size = Raw::fetch_<uint32_t> (start+4, is_BE);
>       |           ^~~~
>       |           Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:203:18: error: ‘Raw’ has not been declared
>   203 |           size = Raw::fetch_<uint32_t> (start+4, is_BE);
>       |                  ^~~
> core/file/dicom/element.cpp:203:38: error: expected primary-expression before ‘>’ token
>   203 |           size = Raw::fetch_<uint32_t> (start+4, is_BE);
>       |                                      ^
> core/file/dicom/element.cpp:203:50: error: ‘is_BE’ was not declared in this scope
>   203 |           size = Raw::fetch_<uint32_t> (start+4, is_BE);
>       |                                                  ^~~~~
> core/file/dicom/element.cpp:206:9: error: ‘next’ was not declared in this scope; did you mean ‘std::next’?
>   206 |         next = data;
>       |         ^~~~
>       |         std::next
> In file included from /usr/include/c++/11/bits/stl_algobase.h:66,
>                  from /usr/include/c++/11/bits/char_traits.h:39,
>                  from /usr/include/c++/11/string:40,
>                  from ./core/file/path.h:23,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/c++/11/bits/stl_iterator_base_funcs.h:213:5: note: ‘std::next’ declared here
>   213 |     next(_InputIterator __x, typename
>       |     ^~~~
> core/file/dicom/element.cpp:208:13: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   208 |         if (size == LENGTH_UNDEFINED) {
>       |             ^~~~
>       |             Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:209:15: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   209 |           if (VR != VR_SQ && !(group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_ITEM))
>       |               ^~
>       |               MR
> core/file/dicom/element.cpp:209:32: error: ‘group’ was not declared in this scope
>   209 |           if (VR != VR_SQ && !(group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_ITEM))
>       |                                ^~~~~
> core/file/dicom/element.cpp:209:59: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   209 |           if (VR != VR_SQ && !(group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_ITEM))
>       |                                                           ^~~~~~~
>       |                                                           Element
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:210:62: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   210 |             INFO ("undefined length used for DICOM tag " + ( tag_name().size() ? tag_name().substr (2) : "" )
>       |                                                              ^~~~~~~~
> ./core/exception.h:74:69: note: in definition of macro ‘INFO’
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                                     ^~~
> core/file/dicom/element.cpp:211:76: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   211 |                 + MR::printf ("(%04X, %04X) in file \"", group, element) + fmap->name() + "\"");
>       |                                                                            ^~~~
> ./core/exception.h:74:69: note: in definition of macro ‘INFO’
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                                     ^~~
> ./core/exception.h:74:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:210:13: note: in expansion of macro ‘INFO’
>   210 |             INFO ("undefined length used for DICOM tag " + ( tag_name().size() ? tag_name().substr (2) : "" )
>       |             ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:213:30: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   213 |         else if (next+size > fmap->address() + fmap->size())
>       |                              ^~~~
>       |                              fmax
> core/file/dicom/element.cpp:214:17: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   214 |           throw Exception ("file \"" + fmap->name() + "\" is too small to contain DICOM elements specified");
>       |                 ^~~~~~~~~
>       |                 MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:217:46: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   217 |             DEBUG ("WARNING: odd length (" + str (size) + ") used for DICOM tag " + ( tag_name().size() ? tag_name().substr (2) : "" )
>       |                                              ^~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:217:87: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   217 |             DEBUG ("WARNING: odd length (" + str (size) + ") used for DICOM tag " + ( tag_name().size() ? tag_name().substr (2) : "" )
>       |                                                                                       ^~~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:218:31: error: ‘group’ was not declared in this scope
>   218 |                 + " (" + str (group) + ", " + str (element) + ") in file \"" + fmap->name() + "");
>       |                               ^~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:218:52: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   218 |                 + " (" + str (group) + ", " + str (element) + ") in file \"" + fmap->name() + "");
>       |                                                    ^~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:217:13: note: in expansion of macro ‘DEBUG’
>   217 |             DEBUG ("WARNING: odd length (" + str (size) + ") used for DICOM tag " + ( tag_name().size() ? tag_name().substr (2) : "" )
>       |             ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:219:15: error: ‘VR’ was not declared in this scope; did you mean ‘MR’?
>   219 |           if (VR != VR_SQ) {
>       |               ^~
>       |               MR
> core/file/dicom/element.cpp:220:17: error: ‘group’ was not declared in this scope
>   220 |             if (group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_ITEM) {
>       |                 ^~~~~
> core/file/dicom/element.cpp:220:44: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   220 |             if (group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_ITEM) {
>       |                                            ^~~~~~~
>       |                                            Element
> core/file/dicom/element.cpp:221:19: error: ‘parents’ was not declared in this scope
>   221 |               if (parents.size() && parents.back().group == GROUP_DATA && parents.back().element == ELEMENT_DATA)
>       |                   ^~~~~~~
> core/file/dicom/element.cpp:231:13: error: ‘parents’ was not declared in this scope
>   231 |         if (parents.size())
>       |             ^~~~~~~
> core/file/dicom/element.cpp:233:16: error: ‘group’ was not declared in this scope
>   233 |               (group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_DELIMITATION_ITEM))
>       |                ^~~~~
> core/file/dicom/element.cpp:233:43: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   233 |               (group == GROUP_SEQUENCE && element == ELEMENT_SEQUENCE_DELIMITATION_ITEM))
>       |                                           ^~~~~~~
>       |                                           Element
> core/file/dicom/element.cpp:236:13: error: ‘is_new_sequence’ was not declared in this scope
>   236 |         if (is_new_sequence()) {
>       |             ^~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:237:15: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   237 |           if (size == LENGTH_UNDEFINED)
>       |               ^~~~
>       |               Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:238:13: error: ‘parents’ was not declared in this scope
>   238 |             parents.push_back (Sequence (group, element, nullptr));
>       |             ^~~~~~~
> core/file/dicom/element.cpp:238:42: error: ‘group’ was not declared in this scope
>   238 |             parents.push_back (Sequence (group, element, nullptr));
>       |                                          ^~~~~
> core/file/dicom/element.cpp:238:49: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   238 |             parents.push_back (Sequence (group, element, nullptr));
>       |                                                 ^~~~~~~
>       |                                                 Element
> core/file/dicom/element.cpp:238:32: error: ‘Sequence’ was not declared in this scope; did you mean ‘MR::File::Dicom::Sequence’?
>   238 |             parents.push_back (Sequence (group, element, nullptr));
>       |                                ^~~~~~~~
>       |                                MR::File::Dicom::Sequence
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:33:13: note: ‘MR::File::Dicom::Sequence’ declared here
>    33 |       class Sequence { NOMEMALIGN
>       |             ^~~~~~~~
> core/file/dicom/element.cpp:240:13: error: ‘parents’ was not declared in this scope
>   240 |             parents.push_back (Sequence (group, element, data + size));
>       |             ^~~~~~~
> core/file/dicom/element.cpp:240:42: error: ‘group’ was not declared in this scope
>   240 |             parents.push_back (Sequence (group, element, data + size));
>       |                                          ^~~~~
> core/file/dicom/element.cpp:240:49: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   240 |             parents.push_back (Sequence (group, element, data + size));
>       |                                                 ^~~~~~~
>       |                                                 Element
> core/file/dicom/element.cpp:240:32: error: ‘Sequence’ was not declared in this scope; did you mean ‘MR::File::Dicom::Sequence’?
>   240 |             parents.push_back (Sequence (group, element, data + size));
>       |                                ^~~~~~~~
>       |                                MR::File::Dicom::Sequence
> In file included from core/file/dicom/element.cpp:18:
> ./core/file/dicom/element.h:33:13: note: ‘MR::File::Dicom::Sequence’ declared here
>    33 |       class Sequence { NOMEMALIGN
>       |             ^~~~~~~~
> core/file/dicom/element.cpp:246:17: error: ‘group’ was not declared in this scope
>   246 |         switch (group) {
>       |                 ^~~~~
> core/file/dicom/element.cpp:248:21: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   248 |             switch (element) {
>       |                     ^~~~~~~
>       |                     Element
> core/file/dicom/element.cpp:250:91: error: ‘size’ was not declared in this scope; did you mean ‘Eigen::internal::size’?
>   250 |                 if (strncmp (reinterpret_cast<const char*> (data), "1.2.840.10008.1.2.1", size) == 0) {
>       |                                                                                           ^~~~
>       |                                                                                           Eigen::internal::size
> In file included from /usr/include/eigen3/Eigen/Core:162,
>                  from /usr/include/eigen3/Eigen/Geometry:11,
>                  from ./core/types.h:78,
>                  from ./core/exception.h:24,
>                  from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> /usr/include/eigen3/Eigen/src/Core/util/Meta.h:482:23: note: ‘Eigen::internal::size’ declared here
>   482 | EIGEN_CONSTEXPR Index size(const T (&) [N]) { return N; }
>       |                       ^~~~
> core/file/dicom/element.cpp:251:19: error: ‘is_BE’ was not declared in this scope
>   251 |                   is_BE = is_transfer_syntax_BE = false; // explicit VR Little Endian
>       |                   ^~~~~
> core/file/dicom/element.cpp:251:27: error: ‘is_transfer_syntax_BE’ was not declared in this scope
>   251 |                   is_BE = is_transfer_syntax_BE = false; // explicit VR Little Endian
>       |                           ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:252:19: error: ‘is_explicit’ was not declared in this scope
>   252 |                   is_explicit = true;
>       |                   ^~~~~~~~~~~
> core/file/dicom/element.cpp:255:19: error: ‘is_BE’ was not declared in this scope
>   255 |                   is_BE = is_transfer_syntax_BE = true; // Explicit VR Big Endian
>       |                   ^~~~~
> core/file/dicom/element.cpp:255:27: error: ‘is_transfer_syntax_BE’ was not declared in this scope
>   255 |                   is_BE = is_transfer_syntax_BE = true; // Explicit VR Big Endian
>       |                           ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:256:19: error: ‘is_explicit’ was not declared in this scope
>   256 |                   is_explicit = true;
>       |                   ^~~~~~~~~~~
> core/file/dicom/element.cpp:259:19: error: ‘is_BE’ was not declared in this scope
>   259 |                   is_BE = is_transfer_syntax_BE = false; // Implicit VR Little Endian
>       |                   ^~~~~
> core/file/dicom/element.cpp:259:27: error: ‘is_transfer_syntax_BE’ was not declared in this scope
>   259 |                   is_BE = is_transfer_syntax_BE = false; // Implicit VR Little Endian
>       |                           ^~~~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:260:19: error: ‘is_explicit’ was not declared in this scope
>   260 |                   is_explicit = false;
>       |                   ^~~~~~~~~~~
> core/file/dicom/element.cpp:263:25: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   263 |                   throw Exception ("DICOM deflated explicit VR little endian transfer syntax not supported");
>       |                         ^~~~~~~~~
>       |                         MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp:266:19: error: ‘transfer_syntax_supported’ was not declared in this scope
>   266 |                   transfer_syntax_supported = false;
>       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:268:41: error: ‘fmap’ was not declared in this scope; did you mean ‘fmax’?
>   268 |                     + "\" in file \"" + fmap->name() + "\"");
>       |                                         ^~~~
> ./core/exception.h:74:69: note: in definition of macro ‘INFO’
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                                     ^~~
> ./core/exception.h:74:48: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    74 | #define INFO(msg) if (MR::App::log_level >= 2) report_to_user_func (msg, 2)
>       |                                                ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:267:19: note: in expansion of macro ‘INFO’
>   267 |                   INFO ("unsupported DICOM transfer syntax: \"" + std::string (reinterpret_cast<const char*> (data), size)
>       |                   ^~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:290:7: error: ‘Element’ does not name a type
>   290 |       Element::Type Element::type () const
>       |       ^~~~~~~
> core/file/dicom/element.cpp:308:7: error: ‘vector’ does not name a type
>   308 |       vector<int32_t> Element::get_int () const
>       |       ^~~~~~
> core/file/dicom/element.cpp:332:7: error: ‘vector’ does not name a type
>   332 |       vector<uint32_t> Element::get_uint () const
>       |       ^~~~~~
> core/file/dicom/element.cpp:354:7: error: ‘vector’ does not name a type
>   354 |       vector<default_type> Element::get_float () const
>       |       ^~~~~~
> core/file/dicom/element.cpp:377:7: error: ‘Date’ does not name a type
>   377 |       Date Element::get_date () const
>       |       ^~~~
> core/file/dicom/element.cpp:386:7: error: ‘Time’ does not name a type
>   386 |       Time Element::get_time () const
>       |       ^~~~
> core/file/dicom/element.cpp:396:7: error: ‘vector’ does not name a type
>   396 |       vector<std::string> Element::get_string () const
>       |       ^~~~~~
> core/file/dicom/element.cpp:410:19: error: ‘Element’ has not been declared
>   410 |       std::string Element::as_string () const
>       |                   ^~~~~~~
> core/file/dicom/element.cpp:410:41: error: non-member function ‘std::string Eigen::as_string()’ cannot have cv-qualifier
>   410 |       std::string Element::as_string () const
>       |                                         ^~~~~
> core/file/dicom/element.cpp: In function ‘std::string Eigen::as_string()’:
> core/file/dicom/element.cpp:414:19: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   414 |           switch (type()) {
>       |                   ^~~~
>       |                   wctype
> core/file/dicom/element.cpp:415:18: error: ‘Element’ has not been declared
>   415 |             case Element::INT:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:416:36: error: ‘get_int’ was not declared in this scope; did you mean ‘getline’?
>   416 |               for (const auto& x : get_int())
>       |                                    ^~~~~~~
>       |                                    getline
> core/file/dicom/element.cpp:419:18: error: ‘Element’ has not been declared
>   419 |             case Element::UINT:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:420:36: error: ‘get_uint’ was not declared in this scope
>   420 |               for (const auto& x : get_uint())
>       |                                    ^~~~~~~~
> core/file/dicom/element.cpp:423:18: error: ‘Element’ has not been declared
>   423 |             case Element::FLOAT:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:424:36: error: ‘get_float’ was not declared in this scope
>   424 |               for (const auto& x : get_float())
>       |                                    ^~~~~~~~~
> core/file/dicom/element.cpp:427:18: error: ‘Element’ has not been declared
>   427 |             case Element::DATE:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:428:26: error: ‘get_date’ was not declared in this scope; did you mean ‘getdate’?
>   428 |               return str(get_date());
>       |                          ^~~~~~~~
>       |                          getdate
> core/file/dicom/element.cpp:428:22: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   428 |               return str(get_date());
>       |                      ^~~
>       |                      Eigen::str
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> core/file/dicom/element.cpp:429:18: error: ‘Element’ has not been declared
>   429 |             case Element::TIME:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:430:26: error: ‘get_time’ was not declared in this scope
>   430 |               return str(get_time());
>       |                          ^~~~~~~~
> core/file/dicom/element.cpp:431:18: error: ‘Element’ has not been declared
>   431 |             case Element::STRING:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:432:19: error: ‘group’ was not declared in this scope
>   432 |               if (group == GROUP_DATA && element == ELEMENT_DATA) {
>       |                   ^~~~~
> core/file/dicom/element.cpp:432:42: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   432 |               if (group == GROUP_DATA && element == ELEMENT_DATA) {
>       |                                          ^~~~~~~
>       |                                          Element
> core/file/dicom/element.cpp:436:38: error: ‘get_string’ was not declared in this scope; did you mean ‘as_string’?
>   436 |                 for (const auto& x : get_string())
>       |                                      ^~~~~~~~~~
>       |                                      as_string
> core/file/dicom/element.cpp:440:18: error: ‘Element’ has not been declared
>   440 |             case Element::SEQ:
>       |                  ^~~~~~~
> core/file/dicom/element.cpp:443:19: error: ‘group’ was not declared in this scope
>   443 |               if (group != GROUP_SEQUENCE || element != ELEMENT_SEQUENCE_ITEM)
>       |                   ^~~~~
> core/file/dicom/element.cpp:443:46: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   443 |               if (group != GROUP_SEQUENCE || element != ELEMENT_SEQUENCE_ITEM)
>       |                                              ^~~~~~~
>       |                                              Element
> core/file/dicom/element.cpp:447:16: error: ‘Exception’ does not name a type
>   447 |         catch (Exception& e) {
>       |                ^~~~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:448:66: error: ‘start’ was not declared in this scope; did you mean ‘stat’?
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |                                                                  ^~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:448:59: error: ‘offset’ was not declared in this scope; did you mean ‘off_t’?
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |                                                           ^~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:448:55: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |                                                       ^~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:448:85: error: ‘type_as_str’ was not declared in this scope; did you mean ‘MR::File::Dicom::type_as_str’?
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |                                                                                     ^~~~~~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:53:19: note: ‘MR::File::Dicom::type_as_str’ declared here
>    53 |       const char* Element::type_as_str[] = { "invalid",
>       |                   ^~~~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:448:97: error: ‘type’ was not declared in this scope; did you mean ‘wctype’?
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |                                                                                                 ^~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:448:11: note: in expansion of macro ‘DEBUG’
>   448 |           DEBUG ("Error converting data at offset " + str(offset(start)) + " to " + type_as_str[type()] + " type: ");
>       |           ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:449:26: error: ‘e’ was not declared in this scope
>   449 |           for (auto& s : e.description)
>       |                          ^
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:450:13: note: in expansion of macro ‘DEBUG’
>   450 |             DEBUG (s);
>       |             ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:463:40: error: ‘vector’ does not name a type
>   463 |           inline void print_vec (const vector<T>& V)
>       |                                        ^~~~~~
> core/file/dicom/element.cpp:463:46: error: expected ‘,’ or ‘...’ before ‘<’ token
>   463 |           inline void print_vec (const vector<T>& V)
>       |                                              ^
> core/file/dicom/element.cpp: In function ‘void Eigen::print_vec(int)’:
> core/file/dicom/element.cpp:465:37: error: ‘V’ was not declared in this scope
>   465 |             for (const auto& entry: V)
>       |                                     ^
> core/file/dicom/element.cpp:466:39: error: there are no arguments to ‘str’ that depend on a template parameter, so a declaration of ‘str’ must be available [-fpermissive]
>   466 |               fprintf (stdout, "%s ", str(entry).c_str());
>       |                                       ^~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:471:12: error: ‘Element’ has not been declared
>   471 |       void Element::error_in_get (size_t idx) const
>       |            ^~~~~~~
> core/file/dicom/element.cpp:471:47: error: non-member function ‘void Eigen::error_in_get(std::size_t)’ cannot have cv-qualifier
>   471 |       void Element::error_in_get (size_t idx) const
>       |                                               ^~~~~
> core/file/dicom/element.cpp: In function ‘void Eigen::error_in_get(std::size_t)’:
> core/file/dicom/element.cpp:473:34: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   473 |         const std::string& name (tag_name());
>       |                                  ^~~~~~~~
>       |                                  tzname
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp:474:72: error: ‘group’ was not declared in this scope
>   474 |         DEBUG ("value not found for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (at index " + str(idx) + ")");
>       |                                                                        ^~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:474:79: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   474 |         DEBUG ("value not found for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (at index " + str(idx) + ")");
>       |                                                                               ^~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:474:153: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   474 |         DEBUG ("value not found for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (at index " + str(idx) + ")");
>       |                                                                                                                                                         ^~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:474:9: note: in expansion of macro ‘DEBUG’
>   474 |         DEBUG ("value not found for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (at index " + str(idx) + ")");
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:477:12: error: ‘Element’ has not been declared
>   477 |       void Element::error_in_check_size (size_t min_size, size_t actual_size) const
>       |            ^~~~~~~
> core/file/dicom/element.cpp:477:79: error: non-member function ‘void Eigen::error_in_check_size(std::size_t, std::size_t)’ cannot have cv-qualifier
>   477 |       void Element::error_in_check_size (size_t min_size, size_t actual_size) const
>       |                                                                               ^~~~~
> core/file/dicom/element.cpp: In function ‘void Eigen::error_in_check_size(std::size_t, std::size_t)’:
> core/file/dicom/element.cpp:479:34: error: ‘tag_name’ was not declared in this scope; did you mean ‘tzname’?
>   479 |         const std::string& name (tag_name());
>       |                                  ^~~~~~~~
>       |                                  tzname
> core/file/dicom/element.cpp:480:86: error: ‘group’ was not declared in this scope
>   480 |         throw Exception ("not enough items in for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (expected " + str(min_size) + ", got " + str(actual_size) + ")");
>       |                                                                                      ^~~~~
> core/file/dicom/element.cpp:480:93: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   480 |         throw Exception ("not enough items in for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (expected " + str(min_size) + ", got " + str(actual_size) + ")");
>       |                                                                                             ^~~~~~~
>       |                                                                                             Element
> core/file/dicom/element.cpp:480:167: error: ‘str’ was not declared in this scope; did you mean ‘Eigen::str’?
>   480 |         throw Exception ("not enough items in for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (expected " + str(min_size) + ", got " + str(actual_size) + ")");
>       |                                                                                                                                                                       ^~~
>       |                                                                                                                                                                       Eigen::str
> In file included from ./core/file/path.h:31,
>                  from core/file/dicom/element.cpp:17:
> ./core/mrtrix.h:247:41: note: ‘Eigen::str’ declared here
>   247 |   template <class T> inline std::string str (const T& value, int precision = 0)
>       |                                         ^~~
> core/file/dicom/element.cpp:480:15: error: ‘Exception’ was not declared in this scope; did you mean ‘MR::Exception’?
>   480 |         throw Exception ("not enough items in for DICOM tag " + printf("%04X %04X ", group, element) + ( name.size() ? name.substr(2) : "unknown" ) + " (expected " + str(min_size) + ", got " + str(actual_size) + ")");
>       |               ^~~~~~~~~
>       |               MR::Exception
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> ./core/exception.h:80:9: note: ‘MR::Exception’ declared here
>    80 |   class Exception { NOMEMALIGN
>       |         ^~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:483:12: error: ‘Element’ has not been declared
>   483 |       void Element::report_unknown_tag_with_implicit_syntax () const
>       |            ^~~~~~~
> core/file/dicom/element.cpp:483:64: error: non-member function ‘void Eigen::report_unknown_tag_with_implicit_syntax()’ cannot have cv-qualifier
>   483 |       void Element::report_unknown_tag_with_implicit_syntax () const
>       |                                                                ^~~~~
> In file included from ./core/file/path.h:30,
>                  from core/file/dicom/element.cpp:17:
> core/file/dicom/element.cpp: In function ‘void Eigen::report_unknown_tag_with_implicit_syntax()’:
> core/file/dicom/element.cpp:486:73: error: ‘group’ was not declared in this scope
>   486 |               "in DICOM implicit syntax for tag (%04X %04X) - ignored", group, element));
>       |                                                                         ^~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> core/file/dicom/element.cpp:486:80: error: ‘element’ was not declared in this scope; did you mean ‘Element’?
>   486 |               "in DICOM implicit syntax for tag (%04X %04X) - ignored", group, element));
>       |                                                                                ^~~~~~~
> ./core/exception.h:75:70: note: in definition of macro ‘DEBUG’
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                                      ^~~
> ./core/exception.h:75:49: error: ‘report_to_user_func’ was not declared in this scope; did you mean ‘Eigen::report_to_user_func’?
>    75 | #define DEBUG(msg) if (MR::App::log_level >= 3) report_to_user_func (msg, 3)
>       |                                                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:485:9: note: in expansion of macro ‘DEBUG’
>   485 |         DEBUG (MR::printf ("attempt to read data of unknown value representation "
>       |         ^~~~~
> ./core/exception.h:69:17: note: ‘Eigen::report_to_user_func’ declared here
>    69 |   extern void (*report_to_user_func) (const std::string& msg, int type);
>       |                 ^~~~~~~~~~~~~~~~~~~
> core/file/dicom/element.cpp: At global scope:
> core/file/dicom/element.cpp:496:61: error: ‘Element’ does not name a type
>   496 |       std::ostream& operator<< (std::ostream& stream, const Element& item)
>       |                                                             ^~~~~~~
> core/file/dicom/element.cpp:496:21: error: redefinition of ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’
>   496 |       std::ostream& operator<< (std::ostream& stream, const Element& item)
>       |                     ^~~~~~~~
> In file included from ./core/file/mmap.h:25,
>                  from ./core/file/dicom/element.h:25,
>                  from core/file/dicom/element.cpp:18:
> ./core/file/entry.h:47:26: note: ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’ previously defined here
>    47 |     inline std::ostream& operator<< (std::ostream& stream, const Entry& e)
>       |                          ^~~~~~~~
> core/file/dicom/element.cpp: In function ‘std::ostream& Eigen::operator<<(std::ostream&, const int&)’:
> core/file/dicom/element.cpp:500:39: error: request for member ‘tag_name’ in ‘item’, which is of non-class type ‘const int’
>   500 |         const std::string& name (item.tag_name());
>       |                                       ^~~~~~~~
> core/file/dicom/element.cpp:501:69: error: request for member ‘group’ in ‘item’, which is of non-class type ‘const int’
>   501 |         stream << printf ("[DCM] %04X %04X %c%c % 8u % 8llu ", item.group, item.element,
>       |                                                                     ^~~~~
> core/file/dicom/element.cpp:501:81: error: request for member ‘element’ in ‘item’, which is of non-class type ‘const int’
>   501 |         stream << printf ("[DCM] %04X %04X %c%c % 8u % 8llu ", item.group, item.element,
>       |                                                                                 ^~~~~~~
> core/file/dicom/element.cpp:502:50: error: request for member ‘VR’ in ‘item’, which is of non-class type ‘const int’
>   502 |             reinterpret_cast<const char*> (&item.VR)[1], reinterpret_cast<const char*> (&item.VR)[0],
>       |                                                  ^~
> core/file/dicom/element.cpp:502:95: error: request for member ‘VR’ in ‘item’, which is of non-class type ‘const int’
>   502 |             reinterpret_cast<const char*> (&item.VR)[1], reinterpret_cast<const char*> (&item.VR)[0],
>       |                                                                                               ^~
> core/file/dicom/element.cpp:503:20: error: request for member ‘size’ in ‘item’, which is of non-class type ‘const int’
>   503 |             ( item.size == LENGTH_UNDEFINED ? uint32_t(0) : item.size ), item.offset (item.start));
>       |                    ^~~~
> core/file/dicom/element.cpp:503:66: error: request for member ‘size’ in ‘item’, which is of non-class type ‘const int’
>   503 |             ( item.size == LENGTH_UNDEFINED ? uint32_t(0) : item.size ), item.offset (item.start));
>       |                                                                  ^~~~
> core/file/dicom/element.cpp:503:79: error: request for member ‘offset’ in ‘item’, which is of non-class type ‘const int’
>   503 |             ( item.size == LENGTH_UNDEFINED ? uint32_t(0) : item.size ), item.offset (item.start));
>       |                                                                               ^~~~~~
> core/file/dicom/element.cpp:503:92: error: request for member ‘start’ in ‘item’, which is of non-class type ‘const int’
>   503 |             ( item.size == LENGTH_UNDEFINED ? uint32_t(0) : item.size ), item.offset (item.start));
>       |                                                                                            ^~~~~
> core/file/dicom/element.cpp:506:30: error: request for member ‘level’ in ‘item’, which is of non-class type ‘const int’
>   506 |         size_t indent = item.level() - ( item.VR == VR_SQ ? 1 : 0 );
>       |                              ^~~~~
> core/file/dicom/element.cpp:506:47: error: request for member ‘VR’ in ‘item’, which is of non-class type ‘const int’
>   506 |         size_t indent = item.level() - ( item.VR == VR_SQ ? 1 : 0 );
>       |                                               ^~
> core/file/dicom/element.cpp:509:18: error: request for member ‘is_new_sequence’ in ‘item’, which is of non-class type ‘const int’
>   509 |         if (item.is_new_sequence())
>       |                  ^~~~~~~~~~~~~~~
> core/file/dicom/element.cpp:511:23: error: request for member ‘group’ in ‘item’, which is of non-class type ‘const int’
>   511 |         else if (item.group == GROUP_SEQUENCE && item.element == ELEMENT_SEQUENCE_ITEM)
>       |                       ^~~~~
> core/file/dicom/element.cpp:511:55: error: request for member ‘element’ in ‘item’, which is of non-class type ‘const int’
>   511 |         else if (item.group == GROUP_SEQUENCE && item.element == ELEMENT_SEQUENCE_ITEM)
>       |                                                       ^~~~~~~
> core/file/dicom/element.cpp:517:38: error: request for member ‘as_string’ in ‘item’, which is of non-class type ‘const int’
>   517 |         stream << tmp << " " << item.as_string() << "\n";
>       |                                      ^~~~~~~~~
> make[1]: *** [debian/rules:36: override_dh_auto_build] Error 1


The full build log is available from:
http://qa-logs.debian.net/2021/12/20/mrtrix3_3.0.3-1_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.



More information about the Debian-med-packaging mailing list