On current IPPL master, including Manager/datatypes.h without first including Ippl.h fails with errors such as:
HaloCells.hpp:258: error: no template named 'RangePolicy'
HaloCells.hpp:262: error: no member named 'parallel_for' in namespace 'ippl'
ParallelDispatch.h includes Ippl.h, while Ippl.h includes ParallelDispatch.h and then IpplCore.h. This cycle allows HaloCells.hpp to be parsed before ippl::RangePolicy and ippl::parallel_for are declared. Headers should compile independently of whether Ippl.h was included first. Removing the Ippl.h dependency from ParallelDispatch.h, or otherwise breaking the cycle, should resolve the issue.
This include chain lead to a compiler error in OPALX. In can also be circumvented in OPALX by including Ippl.h first, but the "cleaner" fix would be here in IPPL.
On current IPPL master, including
Manager/datatypes.hwithout first includingIppl.hfails with errors such as:ParallelDispatch.hincludesIppl.h, whileIppl.hincludesParallelDispatch.hand thenIpplCore.h. This cycle allowsHaloCells.hppto be parsed beforeippl::RangePolicyandippl::parallel_forare declared. Headers should compile independently of whetherIppl.hwas included first. Removing theIppl.hdependency fromParallelDispatch.h, or otherwise breaking the cycle, should resolve the issue.This include chain lead to a compiler error in OPALX. In can also be circumvented in OPALX by including
Ippl.hfirst, but the "cleaner" fix would be here in IPPL.