diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc
index e3a5bad8e8eef62adeda8ee869f4cad4a6628ab2..45247ec1be0179488f2161046fc5b47aaa22a98c 100644
--- a/preprocessor/ExprNode.cc
+++ b/preprocessor/ExprNode.cc
@@ -21,15 +21,11 @@
 #include <iterator>
 #include <algorithm>
 
-// For select1st()
-#ifdef __GNUC__
-# include <ext/functional>
-using namespace __gnu_cxx;
-#endif
-
 #include <cassert>
 #include <cmath>
 
+#include <boost/bind.hpp>
+
 #include "ExprNode.hh"
 #include "DataTree.hh"
 #include "ModFile.hh"
@@ -110,7 +106,7 @@ ExprNode::collectModelLocalVariables(set<int> &result) const
   set<pair<int, int> > symb_ids;
   collectVariables(eModelLocalVariable, symb_ids);
   transform(symb_ids.begin(), symb_ids.end(), inserter(result, result.begin()),
-            select1st<pair<int, int> >());
+            boost::bind(&pair<int,int>::first,_1));
 }
 
 void