#pragma once
// Let the hpp files know which dependencies CMake found
#define FUNC_USE_BOOST
#define FUNC_USE_ARMADILLO

#if (__cplusplus > 201700L || _MSVC_LANG > 201700L)
#define FUNC_IF_CONSTEXPR if constexpr
#else
#define FUNC_IF_CONSTEXPR if
#define FUNC_NO_CXX17
#endif

// This is a cmake variable defined in CMakeLists.txt
// and will define the macro FUNC_DECLARE_TEMPLATE_AS_EXTERN(classname)
#define FUNC_DECLARE_TEMPLATE_AS_EXTERN(classname)\
  extern template class classname<double,double>;\
  extern template class classname<float,float>;\
  extern template class classname<long double,long double>;\

