Listing 4

#include "streamstate.h"
#include <iostream>
#include <ostream>
using namespace std;
// the "state" object as in Listing 3.
struct bracketing { /* ... */ };
// this encapsulates the access to additional state
streamstate_value<bracketing> bracketing_state_;
// the hypothetical complex class
class mycomplex
{
public:
    ostream& print(ostream &os) const
    {
        // get the stream state from the slot dedicated to "bracketing"
        bracketing &b = bracketing_state_.get(os);
        return os << b.left_ << re_ << ", " << im_ << b.right_;
    }
    // other operations and members as in Listing 1.
};
// inserter for mycomplex and setbrackets as in Listing 1.
// ...
ostream & operator<<(ostream &os, bracketing b)
{
    // set the stream state in the private slot
    bracketing_state_.get(os) = b;
    return os;
}
int main() { /* ... */ }