--- a/src/funnel.h
+++ b/src/funnel.h
@@ -204,7 +204,7 @@
 	};
 
 	inline void add_stream(RanIt begin, RanIt end)
-		{ *last_stream++ = std::make_pair(begin,end); }
+		{ *last_stream++ = std::pair(begin,end); }
 	inline stream_iterator begin()
 		{ return stream_iterator(input_streams); }
 	inline stream_iterator end()
--- a/src/psort_splitters.h
+++ b/src/psort_splitters.h
@@ -87,8 +87,8 @@
       // keep a list of ranges, trying to "activate" them at each branch
       vector< pair<_RandomAccessIter, _RandomAccessIter> > d_ranges(nproc - 1);
       vector< pair<_Distance *, _Distance *> > t_ranges(nproc - 1);
-      d_ranges[0] = make_pair(first, last);
-      t_ranges[0] = make_pair(targets, targets + (nproc - 1));
+      d_ranges[0] = pair(first, last);
+      t_ranges[0] = pair(targets, targets + (nproc - 1));
   
       // invariant: subdist[i][rank] == d_ranges[i].second - d_ranges[i].first
       // amount of data each proc still has in the search
@@ -181,7 +181,7 @@
 	// sum to get the global range of indices
 	vector<pair<_Distance, _Distance> > ind_global(n_act);
 	for (int k = 0; k < n_act; ++k) {
-	  ind_global[k] = make_pair(0, 0);
+	  ind_global[k] = pair(0, 0);
 	  for (int i = 0; i < nproc; ++i) {
 	    ind_global[k].first += ind_all[2 * (i * n_act + k)];
 	    ind_global[k].second += ind_all[2 * (i * n_act + k) + 1];
@@ -223,9 +223,9 @@
 	  }
 
 	  if ((split_low - t_ranges[k].first) > 0) {
-	    t_ranges_x[n_act_x] = make_pair (t_ranges[k].first, split_low);
+	    t_ranges_x[n_act_x] = pair (t_ranges[k].first, split_low);
 	    // lop off local_ind_low..end
-	    d_ranges_x[n_act_x] = make_pair (d_ranges[k].first, 
+	    d_ranges_x[n_act_x] = pair (d_ranges[k].first, 
 					     first + ind_local[2 * k]);
 	    for (int i = 0; i < nproc; ++i) {
 	      subdist_x[n_act_x][i] = ind_all[2 * (i * n_act + k)] - outleft[k][i];
@@ -235,9 +235,9 @@
 	  }
 
 	  if ((t_ranges[k].second - split_high) > 0) {
-	    t_ranges_x[n_act_x] = make_pair (split_high, t_ranges[k].second);
+	    t_ranges_x[n_act_x] = pair (split_high, t_ranges[k].second);
 	    // lop off begin..local_ind_high
-	    d_ranges_x[n_act_x] = make_pair (first + ind_local[2 * k + 1],
+	    d_ranges_x[n_act_x] = pair (first + ind_local[2 * k + 1],
 					     d_ranges[k].second); 
 	    for (int i = 0; i < nproc; ++i) {
 	      subdist_x[n_act_x][i] = outleft[k][i] 
--- a/src/sort.timpl.h
+++ b/src/sort.timpl.h
@@ -194,7 +194,7 @@
 			return *this;
 		}
 		std::pair<RanIt,RanIt> operator*()
-			{ return make_pair(begin,end); }
+			{ return pair(begin,end); }
 		bool operator==(const iterator& rhs)
 			{ return begin == rhs.begin; }
 	private:
@@ -251,7 +251,7 @@
 	begin_cache = end_cache = malloc.allocate(rec_calls);
 	for( Diff d=run_size; d>static_cast<Diff>(Splitter::switch_to_cache_aware()); d=run_size_<Splitter>(d), ++end_cache )
 		new(end_cache) Merger(Splitter::prefered_order_output(d), talloc);
-	return make_pair(begin_cache,end_cache);
+	return pair(begin_cache,end_cache);
 }
 
 template<class Merger, class Splitter, class It, class OutIt, class Alloc>
