Index: iterator_facade.hpp =================================================================== --- iterator_facade.hpp (revision 68320) +++ iterator_facade.hpp (working copy) @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -321,8 +322,16 @@ , Pointer , operator_arrow_proxy >::type type; + + // Types with alignment cannot be passed by value, so + // we need to make sure that we supply a real reference. + typedef typename mpl::if_< + is_reference + , Reference + , typename add_reference::type + >::type input_type; - static type make(Reference x) + static type make(input_type x) { return boost::implicit_cast(&x); }