// 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()
{
      std::list<int> l;
      l.push_back(1);
      l.push_back(2);

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

