On Sat, May 4, 2013 at 11:03 PM, Olaf Peter <ope-devel@gmx.de> wrote:
Hello,

I run into the problem to provide ostream operator<< support for spirit's debug facility and for lazyness using fusion's io support:

---8<---
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/io.hpp>
#include <iostream>

namespace fusion = boost::fusion;

namespace client {

    struct point {
            int x,y;
    };

    template<typename CharT>
    std::basic_ostream<CharT>& operator<<(std::basic_ostream<CharT>& os, point const& p) {
        os << p;

As is, this just infinitely recurses, as you observed. What do you want to do here? Call the Fusion-provided operator<<? Does explicitly qualifying work? E.g., fusion::operator<<(os, p).

[...]

- Jeff