Bug with intel compiler and typed particles
Problem with the intel compiler and typed particles with the insertion/push method in variadic. The compiler overwrites the prototype of target. push (inPositionPosition, FParticleType:: target, args...);
par target. push (photocomposition, idx, args...);
where idx is a long int.
A bypass could be to reverse the position arguments of the particle and its type. So the method would become targets. push (FParticleType:: target, inParticlePosition, args...);
home/coulaud/Dev/src/ScalFMM/gitlab-devel/Tests/Utils/../../Src/Components/FTypedLeaf.hpp(42): error: more than one instance of overloaded function "FP2PParticleContainerIndexed<FReal, NRHS, NLHS, NVALS>::push [with FReal=double, NRHS=1, NLHS=1, NVALS=1]" matches the argument list: function template "void FVariadicParticleContainer<Particle, Allocator>::push(const FPoint<double, 3UL> &, Args...) [with Particle=FBasicParticle<double, 3UL, long long, scalfmm::pack<5UL, double>>, Allocator=FAlignedAllocator<64UL, char>]" function template "void scalfmm::details::basic_particle_container::FBasicParticleContainerImpl<Allocator, scalfmm::pack<_Dim, FReal>, scalfmm::pack<_AttributeCount, Attribute>, std::index_sequence<posIndices...>, std::index_sequence<attrIndices...>, std::index_sequence<otherIndices...>, OtherTypes...>::push(const FPoint<double, 3UL> &, FParticleType, Args...) [with Allocator=FAlignedAllocator<64UL, char>, FReal=double, Attribute=double, Dim=3UL, AttributeCount=5UL, posIndices=<0UL, 1UL, 2UL>, attrIndices=<0UL, 1UL, 2UL, 3UL, 4UL>, OtherTypes=, otherIndices=<0UL>]" argument types are: (const FPoint<double, 3UL>, FParticleType, FSize) object type is: FP2PParticleContainerIndexed<double, 1, 1, 1> targets.push(inParticlePosition, FParticleType::target, args...); ^ detected during: instantiation of "void FTypedLeaf<FReal, ContainerClass>::push(const FPoint<FReal, 3UL> &, FParticleType, Args...) [with FReal=double, ContainerClass=FP2PParticleContainerIndexed<double, 1, 1, 1>, Args=<FSize={long long}>]" at line 383 of "/home/coulaud/Dev/src/ScalFMM/gitlab-devel/Tests/Utils/../../Src/Containers/FSubOctree.hpp" instantiation of "void FSubOctreeWithLeafs<FReal, CellClass, ContainerClass, LeafClass, CellAllocatorClass>::insert(MortonIndex={long long}, const FTreeCoordinate &, int, const FPoint<FReal, 3UL> &, Args...) [with FReal=double, CellClass=FBasicCell, ContainerClass=FP2PParticleContainerIndexed<double, 1, 1, 1>, LeafClass=FTypedLeaf<double, FP2PParticleContainerIndexed<double, 1, 1, 1>>, CellAllocatorClass=FBasicBlockAllocator, Args=<FParticleType, FSize={long long}>]" at line 180 of "/home/coulaud/Dev/src/ScalFMM/gitlab-devel/Tests/Utils/../../Src/Containers/FOctree.hpp" instantiation of "void FOctree<FReal, CellClass, ContainerClass, LeafClass, CellAllocatorClass>::insert(const FPoint<FReal, 3UL> &, Args...) [with FReal=double, CellClass=FBasicCell, ContainerClass=FP2PParticleContainerIndexed<double, 1, 1, 1>, LeafClass=FTypedLeaf<double, FP2PParticleContainerIndexed<double, 1, 1, 1>>, CellAllocatorClass=FBasicBlockAllocator, Args=<FParticleType, FSize={long long}>]" at line 86 of "/home/coulaud/Dev/src/ScalFMM/gitlab-devel/Tests/Utils/testOctreeRearrangeTsm.cpp"