I am getting this error when compiling with vecgeom.
from /home/user/ROOT-6.24.02/ROOT-Build/geom/vecgeom/G__ConverterVG.cxx:14:
/usr/include/c++/10/bits/unique_ptr.h: In instantiation of ‘constexpr std::unique_ptr<_Tp, _Dp>::unique_ptr(std::nullptr_t) [with _Del = std::default_delete<TInterpreterValue>; <template-parameter-2-2> = void; _Tp = TInterpreterValue; _Dp = std::default_delete<TInterpreterValue>; std::nullptr_t = std::nullptr_t]’:
/home/user/ROOT-6.24.02/ROOT-Build/include/TInterpreter.h:278:85: required from here
/usr/include/c++/10/bits/unique_ptr.h:321:9: error: no matching function for call to ‘std::__uniq_ptr_data<TInterpreterValue, std::default_delete<TInterpreterValue>, true, true>::__uniq_ptr_data()’
321 | : _M_t()
| ^
I have tried to make sure everything is c++14 following on from other posts but to no avail. Any help will be greatly appreciated ROOT Version: 6.24.02 Platform: Debian 11 Compiler: CC
Hello! I can provide the CmakeCache.txt as a seperate attachment if its useful. I simply run the cmake-gui enabling vecgeom and veccore which have been installed in /usr/local/lib. VecGeom has been compiled with cuda 11.4 and the Vc backend to enable vectorisation support as I am interested to see what performance benefits might be had.
In the cmake-gui I have also changed:
clang_exectuable_version =14
cuda_nvcc_flags=-std=c++14
CXX_STANDARD_STRING=14
LIBCLANG_LIBRARY_VERSION=14
llvm_CXX_STD=c++14
veccore, vc builtins have all been disabled and to the best of my ability compiled with c++14
apart from that. I configure and generate then run make -j31 resulting in the error above. I have crawled several error posts so if there is anything else I can provide to help you understand please let me know.
How did you install veccore and vc?
Are you sure they were built with C++14?
if you build with make VERBOSE=1 does that confirm that the compilation is using C++14?
Thanks,
for the ROOT build and the VecCore build with just that part of the output it’s not possible to tell which C++ standard is being used, we need to see an invocation of the compiler (/usr/bin/c++ or similar).
Vc was definitely compiled with C++14, vecgeom was compiled without explicitly passing a c++ standard to the compiler, which should get you -std=gnu++14 which is the default (the GNU dialect of C++14, which should be compatible with C++14).
I have never encountered this problem myself. What I can see that may be a problem is that VecGeom is compiled with AVX2, but ROOT is not, and that can probably cause issues. Please make sure that the SIMD flags are equivalent for VecGeom and ROOT.
This may be the cause, maybe try to compile ROOT with that as well to make sure that the ABI is compatible. I don’t know why VecGeom is adding that flag, it should probably be removed.
/usr/include/c++/10.1.0/bits/unique_ptr.h:594:9: error: no matching function for call to std::__uniq_ptr_data when using GCC 10 or Clang 10
This issue is due to an old version of FFLAS_FFPACK or Givaro libraries inserting an unnecessary -fabi-version=6 flag to the compile command. Use the following command to tell CMake to build those libraries:
cmake -DBUILD_LIBRARIES="Givaro;FFLAS_FFPACK" .
I will try the above, as it seems the other blog mentions these libraries too. Probably required in all builds as well?