http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50523
--- Comment #2 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-09-26 12:07:55 UTC --- Created attachment 25366 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25366 testcase Reduced to ~560 lines. % g++ testcase.cpp -Wfatal-errors testcase.cpp: In instantiation of ‘BinaryNode<Op, Left, Right>::BinaryNode(const Left&, const Right&) [with Op = OpSubtract, Left = Reference<Field<NoMesh<3>, Vector<3>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >, Right = Scalar<Vector<3> >]’: testcase.cpp:318:123: required from ‘typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1, T1, E1> >::Leaf_t, typename CreateLeaf<T2>::Leaf_t> >::Expression_t operator-(const Field<G1, T1, E1>&, const T2&) [with G1 = NoMesh<3>, T1 = Vector<3>, E1 = ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> >, T2 = Vector<3>, typename MakeFieldReturn<BinaryNode<OpSubtract, typename CreateLeaf<Field<G1, T1, E1> >::Leaf_t, typename CreateLeaf<T2>::Leaf_t> >::Expression_t = Field<NoMesh<3>, Vector<3>, ExpressionTag<BinaryNode<OpSubtract, Reference<Field<NoMesh<3>, Vector<3>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >, Scalar<Vector<3> > > > >]’ testcase.cpp:567:74: required from here testcase.cpp:34:83: error: conversion from ‘const Reference<Field<NoMesh<3>, Vector<3>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > > >’ to ‘const Field<NoMesh<3>, Vector<3>, ViewEngine<3, IndexFunction<GenericURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >::PositionsFunctor> > >&’ is ambiguous compilation terminated due to -Wfatal-errors.