$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r74337 - sandbox/endian/boost/endian
From: bdawes_at_[hidden]
Date: 2011-09-10 15:56:10
Author: bemandawes
Date: 2011-09-10 15:56:10 EDT (Sat, 10 Sep 2011)
New Revision: 74337
URL: http://svn.boost.org/trac/boost/changeset/74337
Log:
Remove general reorder template. It doesn't work for classes with more than one member; each member must be reordered individually.
Text files modified: 
   sandbox/endian/boost/endian/conversion2.hpp |    28 +++++-----------------------            
   1 files changed, 5 insertions(+), 23 deletions(-)
Modified: sandbox/endian/boost/endian/conversion2.hpp
==============================================================================
--- sandbox/endian/boost/endian/conversion2.hpp	(original)
+++ sandbox/endian/boost/endian/conversion2.hpp	2011-09-10 15:56:10 EDT (Sat, 10 Sep 2011)
@@ -21,10 +21,9 @@
 //    -- reorder implementation approach suggested by tymofey, with avoidance of
 //       undefined behavior as suggested by Giovanni Piero Deretta, and a further
 //       refinement suggested by Pyry Jahkola.
-//    -- general reorder function template to meet requests for UDT support by
-//       Vicente Botet and others. 
-//    -- general reorder function template implementation approach using std::reverse
-//       suggested by Mathias Gaunard
+//
+//   Q: Why no general reorder template? A: It wouldn't work for classes with more than
+//      one member; each member must be reordered individually.
 //
 //--------------------------------------------------------------------------------------//
 
@@ -45,16 +44,11 @@
 
   // TODO: Need implementation
   // TODO: Need to verify the return does not invoke undefined behavior (as might happen
-  // if there are unutterable floating point values, such as happens with the unutterable
-  // pointer values on some architectures
+  // if there are unutterable floating point values, similar to the unutterable pointer
+  // values on some architectures
   inline float    reorder(float x);    
   inline double   reorder(double x);   
 
-  // TODO: Would pass by value be better for the following functions?
-
-  template <class T>
-  inline T reorder(const T& x);
-
   template <class T>
   inline T big(const T& x);    
     //  Return: x if native endianness is big, otherwise reorder(x);
@@ -115,18 +109,6 @@
            | (step16 & 0xFF00FF00FF00FF00) >> 8;
   }
 
-
-  template <class T>
-  inline T reorder(const T& x)
-  {
-    T tmp;
-    std::reverse(
-      reinterpret_cast<const char*>(&x),
-      reinterpret_cast<const char*>(&x) + sizeof(T),
-      reinterpret_cast<char*>(&tmp));
-    return tmp;
-  }
-
   template <class T>
   inline T big(const T& x)
   {