Why is this wrong?

#include "boost/lambda/lambda.hpp"
#include "boost/lambda/bind.hpp"
#include <iostream>

int main( )
{
  using namespace boost :: lambda;
  int i = 2, j = 3;
  bind( bind( protect( _1 = _2 ), _2, _1 ), _1, _2 )( i, j );
  std :: cout << "i = " << i << ", j = " << j << "\n";
}

Thanks, Rob.