ChimeraTK / ControlSystemAdapter

An adapter layer which allows to use control applications with different control system software environments.
GNU Lesser General Public License v3.0
3 stars 2 forks source link

Compile-time error in testPerformance.cpp #12

Closed smarsching closed 5 years ago

smarsching commented 5 years ago

When I try to compile the control-system adapter on macOS (10.13.6), I get a compiler error. The error message is quite long, so I put it at the end.

I think that the reason for this message is that testPerformance.cpp tries to create a ProcessArray with an element type of size_t, but this is not one of the supported types listed in SupportedUserTypes.h.

The code compiles fine when I replace size_t with std::uint64_t. Is there any reason why the test uses size_t or is this simply a bug in the test code?

[ 61%] Building CXX object CMakeFiles/testPerformance.dir/tests/src/testPerformance.cpp.o
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:4:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:15:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/ProcessArray.h:12:
In file included from /Users/termi/Applications/ChimeraTK/include/ChimeraTK/NDRegisterAccessor.h:14:
In file included from /Users/termi/Applications/ChimeraTK/include/ChimeraTK/TransferElement.h:19:
In file included from /Users/termi/Applications/Homebrew/Installed/include/boost/bind.hpp:22:
In file included from /Users/termi/Applications/Homebrew/Installed/include/boost/bind/bind.hpp:32:
/Users/termi/Applications/Homebrew/Installed/include/boost/core/enable_if.hpp:68:25: error: no type named 'type' in 'boost::fusion::result_of::at_key<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long>'
    typedef typename T::type type;
            ~~~~~~~~~~~~^~~~
/Users/termi/Applications/Homebrew/Installed/include/boost/core/enable_if.hpp:75:35: note: in instantiation of template class 'boost::lazy_disable_if_c<false, boost::fusion::result_of::at_key<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long> >' requested here
  struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:98:9: note: in instantiation of template class 'boost::lazy_disable_if<boost::is_const<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long,
      std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char,
      std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >,
      boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > > >, boost::fusion::result_of::at_key<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long, std::__1::vector<unsigned char,
      std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short, std::__1::map<unsigned long,
      std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned short, std::__1::map<unsigned
      long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > > > > >,
      boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long> >' requested here
        lazy_disable_if<
        ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/PersistentDataStorage.h:213:5: note: while substituting deduced template arguments into function template 'at_key' [with Key = unsigned long, Sequence =
      boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const
      unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned
      long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long,
      std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long,
      std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >,
      boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >,
      boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >,
      boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned
      long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > > > > > >]
    boost::fusion::at_key<DataType>(_dataMap.table)[id] = value;
    ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:603:31: note: in instantiation of function template specialization 'ChimeraTK::PersistentDataStorage::updateValue<unsigned long>'
      requested here
      _persistentDataStorage->updateValue(_persistentDataStorageID, ChimeraTK::NDRegisterAccessor<T>::buffer_2D[0]);
                              ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:537:12: note: in instantiation of member function 'ChimeraTK::UnidirectionalProcessArray<unsigned long>::writeInternal' requested here
    return writeInternal(versionNumber, true);
           ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:59:17: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            p->~T();
                ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/shared_count.hpp:213:23: note: in instantiation of member function 'boost::detail::sp_counted_impl_pd<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >::sp_counted_impl_pd' requested here
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/shared_ptr.hpp:388:67: note: in instantiation of function template specialization 'boost::detail::shared_count::shared_count<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >' requested here
    template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
                                                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:250:28: note: in instantiation of function template specialization 'boost::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>
      >::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>, boost::detail::sp_inplace_tag<boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > > >' requested here
    boost::shared_ptr< T > pt( static_cast< T* >( 0 ), BOOST_SP_MSD( T ) );
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:641:28: note: in instantiation of function template specialization 'boost::make_shared<ChimeraTK::UnidirectionalProcessArray<unsigned
      long>, ChimeraTK::ProcessArray<unsigned long>::InstanceType, const ChimeraTK::RegisterPath &, const std::__1::basic_string<char> &, const std::__1::basic_string<char> &, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, unsigned long &, const
      ChimeraTK::AccessModeFlags &>' requested here
    auto receiver = boost::make_shared<UnidirectionalProcessArray<T>>( ProcessArray<T>::RECEIVER, name, unit,
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:18:23: note: in instantiation of function template specialization 'ChimeraTK::createSynchronizedProcessArray<unsigned long>' requested here
      pvars.push_back(createSynchronizedProcessArray<size_t>(dataSize, name));
                      ^
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:4:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:15:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/ProcessArray.h:16:
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/PersistentDataStorage.h:213:5: error: no matching function for call to 'at_key'
    boost::fusion::at_key<DataType>(_dataMap.table)[id] = value;
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:603:31: note: in instantiation of function template specialization 'ChimeraTK::PersistentDataStorage::updateValue<unsigned long>'
      requested here
      _persistentDataStorage->updateValue(_persistentDataStorageID, ChimeraTK::NDRegisterAccessor<T>::buffer_2D[0]);
                              ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:537:12: note: in instantiation of member function 'ChimeraTK::UnidirectionalProcessArray<unsigned long>::writeInternal' requested here
    return writeInternal(versionNumber, true);
           ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:59:17: note: in instantiation of member function 'ChimeraTK::UnidirectionalProcessArray<unsigned long>::doWriteTransfer' requested here
            p->~T();
                ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:88:9: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::destroy' requested here
        destroy();
        ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/sp_counted_impl.hpp:166:5: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::~sp_ms_deleter' requested here
    sp_counted_impl_pd( P p ): ptr( p ), del()
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/shared_count.hpp:213:23: note: in instantiation of member function 'boost::detail::sp_counted_impl_pd<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >::sp_counted_impl_pd' requested here
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/shared_ptr.hpp:388:67: note: in instantiation of function template specialization 'boost::detail::shared_count::shared_count<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >' requested here
    template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
                                                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:250:28: note: in instantiation of function template specialization 'boost::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>
      >::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>, boost::detail::sp_inplace_tag<boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > > >' requested here
    boost::shared_ptr< T > pt( static_cast< T* >( 0 ), BOOST_SP_MSD( T ) );
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:641:28: note: in instantiation of function template specialization 'boost::make_shared<ChimeraTK::UnidirectionalProcessArray<unsigned
      long>, ChimeraTK::ProcessArray<unsigned long>::InstanceType, const ChimeraTK::RegisterPath &, const std::__1::basic_string<char> &, const std::__1::basic_string<char> &, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, unsigned long &, const
      ChimeraTK::AccessModeFlags &>' requested here
    auto receiver = boost::make_shared<UnidirectionalProcessArray<T>>( ProcessArray<T>::RECEIVER, name, unit,
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:18:23: note: in instantiation of function template specialization 'ChimeraTK::createSynchronizedProcessArray<unsigned long>' requested here
      pvars.push_back(createSynchronizedProcessArray<size_t>(dataSize, name));
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:102:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]
    at_key(Sequence& seq)
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:110:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]: no type named 'type' in 'boost::fusion::result_of::at_key<const boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long>'
    at_key(Sequence const& seq)
    ^
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:4:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:15:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/ProcessArray.h:16:
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/PersistentDataStorage.h:156:38: error: no matching function for call to 'at_key'
      std::vector<DataType> &value = boost::fusion::at_key<DataType>(_dataMap.table)[id];
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:559:56: note: in instantiation of function template specialization 'ChimeraTK::PersistentDataStorage::registerVariable<unsigned long>'
      requested here
    _persistentDataStorageID = _persistentDataStorage->registerVariable<T>(ChimeraTK::TransferElement::getName(),
                                                       ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:59:17: note: in instantiation of member function 'ChimeraTK::UnidirectionalProcessArray<unsigned long>::setPersistentDataStorage' requested here
            p->~T();
                ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:88:9: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::destroy' requested here
        destroy();
        ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/sp_counted_impl.hpp:166:5: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::~sp_ms_deleter' requested here
    sp_counted_impl_pd( P p ): ptr( p ), del()
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/shared_count.hpp:213:23: note: in instantiation of member function 'boost::detail::sp_counted_impl_pd<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >::sp_counted_impl_pd' requested here
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/shared_ptr.hpp:388:67: note: in instantiation of function template specialization 'boost::detail::shared_count::shared_count<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >' requested here
    template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
                                                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:250:28: note: in instantiation of function template specialization 'boost::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>
      >::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>, boost::detail::sp_inplace_tag<boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > > >' requested here
    boost::shared_ptr< T > pt( static_cast< T* >( 0 ), BOOST_SP_MSD( T ) );
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:641:28: note: in instantiation of function template specialization 'boost::make_shared<ChimeraTK::UnidirectionalProcessArray<unsigned
      long>, ChimeraTK::ProcessArray<unsigned long>::InstanceType, const ChimeraTK::RegisterPath &, const std::__1::basic_string<char> &, const std::__1::basic_string<char> &, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, unsigned long &, const
      ChimeraTK::AccessModeFlags &>' requested here
    auto receiver = boost::make_shared<UnidirectionalProcessArray<T>>( ProcessArray<T>::RECEIVER, name, unit,
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:18:23: note: in instantiation of function template specialization 'ChimeraTK::createSynchronizedProcessArray<unsigned long>' requested here
      pvars.push_back(createSynchronizedProcessArray<size_t>(dataSize, name));
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:102:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]: no type named 'type' in 'boost::lazy_disable_if<boost::is_const<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > > >, boost::fusion::result_of::at_key<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long, std::__1::vector<unsigned char,
      std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short, std::__1::map<unsigned long,
      std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned short, std::__1::map<unsigned
      long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > > > > >,
      boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long> >'
    at_key(Sequence& seq)
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:110:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]: no type named 'type' in 'boost::fusion::result_of::at_key<const boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long>'
    at_key(Sequence const& seq)
    ^
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:4:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:15:
In file included from /Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/ProcessArray.h:16:
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/PersistentDataStorage.h:206:12: error: no matching function for call to 'at_key'
    return boost::fusion::at_key<DataType>(_dataMap.table)[id];
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:562:35: note: in instantiation of function template specialization 'ChimeraTK::PersistentDataStorage::retrieveValue<unsigned long>'
      requested here
      if( _persistentDataStorage->retrieveValue<T>(_persistentDataStorageID).size() ==
                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:59:17: note: in instantiation of member function 'ChimeraTK::UnidirectionalProcessArray<unsigned long>::setPersistentDataStorage' requested here
            p->~T();
                ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:88:9: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::destroy' requested here
        destroy();
        ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/sp_counted_impl.hpp:166:5: note: in instantiation of member function 'boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> >::~sp_ms_deleter' requested here
    sp_counted_impl_pd( P p ): ptr( p ), del()
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/detail/shared_count.hpp:213:23: note: in instantiation of member function 'boost::detail::sp_counted_impl_pd<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >::sp_counted_impl_pd' requested here
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/shared_ptr.hpp:388:67: note: in instantiation of function template specialization 'boost::detail::shared_count::shared_count<ChimeraTK::UnidirectionalProcessArray<unsigned long> *,
      boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > >' requested here
    template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
                                                                  ^
/Users/termi/Applications/Homebrew/Installed/include/boost/smart_ptr/make_shared_object.hpp:250:28: note: in instantiation of function template specialization 'boost::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>
      >::shared_ptr<ChimeraTK::UnidirectionalProcessArray<unsigned long>, boost::detail::sp_inplace_tag<boost::detail::sp_ms_deleter<ChimeraTK::UnidirectionalProcessArray<unsigned long> > > >' requested here
    boost::shared_ptr< T > pt( static_cast< T* >( 0 ), BOOST_SP_MSD( T ) );
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/include/ChimeraTK/ControlSystemAdapter/UnidirectionalProcessArray.h:641:28: note: in instantiation of function template specialization 'boost::make_shared<ChimeraTK::UnidirectionalProcessArray<unsigned
      long>, ChimeraTK::ProcessArray<unsigned long>::InstanceType, const ChimeraTK::RegisterPath &, const std::__1::basic_string<char> &, const std::__1::basic_string<char> &, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, unsigned long &, const
      ChimeraTK::AccessModeFlags &>' requested here
    auto receiver = boost::make_shared<UnidirectionalProcessArray<T>>( ProcessArray<T>::RECEIVER, name, unit,
                           ^
/Users/termi/Documents/workspace/ChimeraTK-ControlSystemAdapter/tests/src/testPerformance.cpp:18:23: note: in instantiation of function template specialization 'ChimeraTK::createSynchronizedProcessArray<unsigned long>' requested here
      pvars.push_back(createSynchronizedProcessArray<size_t>(dataSize, name));
                      ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:102:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]: no type named 'type' in 'boost::lazy_disable_if<boost::is_const<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > > >, boost::fusion::result_of::at_key<boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long, std::__1::vector<unsigned char,
      std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short, std::__1::map<unsigned long,
      std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned short, std::__1::map<unsigned
      long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> > > > > >,
      boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long> >'
    at_key(Sequence& seq)
    ^
/Users/termi/Applications/Homebrew/Installed/include/boost/fusion/sequence/intrinsic/at_key.hpp:110:5: note: candidate template ignored: substitution failure [with Key = unsigned long, Sequence = boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned
      long, std::__1::vector<signed char, std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned
      char, std::__1::map<unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >
      > >, boost::fusion::pair<short, std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >,
      boost::fusion::pair<unsigned short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short,
      std::__1::allocator<unsigned short> > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int,
      std::__1::allocator<int> > > > > >, boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned
      long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long,
      std::__1::vector<float, std::__1::allocator<float> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long,
      std::__1::vector<double, std::__1::allocator<double> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>,
      std::__1::map<unsigned long, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >]: no type named 'type' in 'boost::fusion::result_of::at_key<const boost::fusion::map<boost::fusion::pair<signed char, std::__1::map<unsigned long, std::__1::vector<signed char,
      std::__1::allocator<signed char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<signed char, std::__1::allocator<signed char> > > > > >, boost::fusion::pair<unsigned char, std::__1::map<unsigned long,
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > > > >, boost::fusion::pair<short,
      std::__1::map<unsigned long, std::__1::vector<short, std::__1::allocator<short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<short, std::__1::allocator<short> > > > > >, boost::fusion::pair<unsigned
      short, std::__1::map<unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned short, std::__1::allocator<unsigned short>
      > > > > >, boost::fusion::pair<int, std::__1::map<unsigned long, std::__1::vector<int, std::__1::allocator<int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<int, std::__1::allocator<int> > > > > >,
      boost::fusion::pair<unsigned int, std::__1::map<unsigned long, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned int,
      std::__1::allocator<unsigned int> > > > > >, boost::fusion::pair<long long, std::__1::map<unsigned long, std::__1::vector<long long, std::__1::allocator<long long> >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long,
      std::__1::vector<long long, std::__1::allocator<long long> > > > > >, boost::fusion::pair<unsigned long long, std::__1::map<unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> >, std::__1::less<unsigned long>,
      std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<unsigned long long, std::__1::allocator<unsigned long long> > > > > >, boost::fusion::pair<float, std::__1::map<unsigned long, std::__1::vector<float, std::__1::allocator<float> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<float, std::__1::allocator<float> > > > > >, boost::fusion::pair<double, std::__1::map<unsigned long, std::__1::vector<double, std::__1::allocator<double> >,
      std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<double, std::__1::allocator<double> > > > > >, boost::fusion::pair<std::__1::basic_string<char>, std::__1::map<unsigned long,
      std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > >, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, std::__1::vector<std::__1::basic_string<char>,
      std::__1::allocator<std::__1::basic_string<char> > > > > > > >, unsigned long>'
    at_key(Sequence const& seq)
    ^
4 errors generated.
make[2]: *** [CMakeFiles/testPerformance.dir/tests/src/testPerformance.cpp.o] Error 1
make[1]: *** [CMakeFiles/testPerformance.dir/all] Error 2
make: *** [all] Error 2
killenb commented 5 years ago

It seems like a bug in the test code. size_t definitely is not a supported user type. Please commit the patch you have.

smarsching commented 5 years ago

I just pushed the fix into the master branch.