// Build don't link:
// Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
// From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
// Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
#include <list>
#include <functional>
#include <algorithm>
#include <cassert>
int main()
{
      list<int> l;
      l.push_back(1);
      l.push_back(2);

      list<int>::iterator it =
              find_if( l.begin(), l.end(),
                       // This is a typo, it should be bind2nd, but an
                       // ICE is not a very helpful diagnostic!
                       binder2nd( equal_to<int>(), 2 ) ); // ERROR - 
      assert( *(it) == 2 );
}

