backported fix from ctemplate-2.2 for building with gcc-4.7+

--- ctemplate-1.0/src/base/small_map.h
+++ ctemplate-1.0/src/base/small_map.h
@@ -360,20 +360,20 @@ class small_map {
     if (size_ >= 0) {
       for (int i = 0; i < size_; i++) {
         if (compare(array_[i]->first, x.first)) {
-          return make_pair(iterator(array_ + i), false);
+          return std::make_pair(iterator(array_ + i), false);
         }
       }
       if (size_ == kArraySize) {
         ConvertToRealMap();  // Invalidates all iterators!
         std::pair<typename NormalMap::iterator, bool> ret = map_->insert(x);
-        return make_pair(iterator(ret.first), ret.second);
+        return std::make_pair(iterator(ret.first), ret.second);
       } else {
         array_[size_].Init(x);
-        return make_pair(iterator(array_ + size_++), true);
+        return std::make_pair(iterator(array_ + size_++), true);
       }
     } else {
       std::pair<typename NormalMap::iterator, bool> ret = map_->insert(x);
-      return make_pair(iterator(ret.first), ret.second);
+      return std::make_pair(iterator(ret.first), ret.second);
     }
   }
 
