#include <map>

#include <iostream>
int main()
{
  typedef std::map<int, int> ContainerType;
  typedef std::pair<ContainerType::iterator, bool> EmplaceReturnType;

  ContainerType m;

  // pair move constructor
  EmplaceReturnType aResult = m.emplace(std::make_pair(int(1), int(2)));
  bool aValid = (aResult.second) && ((*(aResult.first)).second == 2);

  // pair converting move constructor
  EmplaceReturnType bResult = m.emplace(std::make_pair(2, 4));
  bool bValid = (bResult.second) && ((*(bResult.first)).second == 4);

  // pair template constructor
  EmplaceReturnType cResult = m.emplace(3, 6);
  bool cValid = (cResult.second) && ((*(cResult.first)).second == 6);

  return (aValid && bValid && cValid) ? 0 : 1;
}

#include <map>

int main()
{
  typedef std::map<int, int> ContainerType;
  typedef std::pair<bool, ContainerType::iterator> EmplaceReturnType;

  ContainerType m;

  // pair move constructor
  EmplaceReturnType aResult = m.emplace(std::make_pair(int(1), int(2)));
  bool aValid = (aResult.first) && ((*(aResult.second)).second == 2);

  // pair converting move constructor
  EmplaceReturnType bResult = m.emplace(std::make_pair(2, 4));
  bool bValid = (bResult.first) && ((*(bResult.second)).second == 4);

  // pair template constructor
  EmplaceReturnType cResult = m.emplace(3, 6);
  bool cValid = (cResult.first) && ((*(cResult.second)).second == 6);

  return (aValid && bValid && cValid) ? 0 : 1;
}

--- 
+++ 
@@ -1,23 +1,24 @@
 #include <map>
 
+#include <iostream>
 int main()
 {
   typedef std::map<int, int> ContainerType;
-  typedef std::pair<bool, ContainerType::iterator> EmplaceReturnType;
+  typedef std::pair<ContainerType::iterator, bool> EmplaceReturnType;
 
   ContainerType m;
 
   // pair move constructor
   EmplaceReturnType aResult = m.emplace(std::make_pair(int(1), int(2)));
-  bool aValid = (aResult.first) && ((*(aResult.second)).second == 2);
+  bool aValid = (aResult.second) && ((*(aResult.first)).second == 2);
 
   // pair converting move constructor
   EmplaceReturnType bResult = m.emplace(std::make_pair(2, 4));
-  bool bValid = (bResult.first) && ((*(bResult.second)).second == 4);
+  bool bValid = (bResult.second) && ((*(bResult.first)).second == 4);
 
   // pair template constructor
   EmplaceReturnType cResult = m.emplace(3, 6);
-  bool cValid = (cResult.first) && ((*(cResult.second)).second == 6);
+  bool cValid = (cResult.second) && ((*(cResult.first)).second == 6);
 
   return (aValid && bValid && cValid) ? 0 : 1;
 }
Use correct pair type order in map::emplace test

Tests on Mac identified that the incorrect type order is used
in the pair type for testing returns from maps's emplace member
function.

Use correct ordering as defined in the Standard, and update tests
of returned pair to check correct entries.
