// { dg-do compile } // { dg-options "-O2 -fstrict-aliasing" } // This caused an ICE during placement new. namespace Pooma { typedef int Context_t; namespace Arch { } inline Context_t context() { } inline int contexts() { } } template struct DomainTraitsScalar { }; template struct DomainTraits : public DomainTraitsScalar { }; template class Grid; template class DomainBase { }; template class Domain : public DomainBase
{ }; #include template<> class Grid<1> : public Domain<1, DomainTraits > > { }; namespace Pooma { class PatchSizeSyncer { typedef Grid<1> Grid_t; PatchSizeSyncer(int contextKey, Grid_t &localGrid); int myContext_m; int numContexts_m; int localKey_m; Grid_t localGrid_m; typedef std::pair Elem_t; std::vector gridList_m; }; } namespace Pooma { PatchSizeSyncer::PatchSizeSyncer(int contextKey, Grid_t &localGrid) : myContext_m(Pooma::context()), numContexts_m(Pooma::contexts()), localKey_m(contextKey), localGrid_m(localGrid) { if (myContext_m == 0) gridList_m.reserve(numContexts_m); } }