| Index: base/memory/manual_constructor.h
 | 
| diff --git a/base/memory/manual_constructor.h b/base/memory/manual_constructor.h
 | 
| index 9275f73b83b80e74ad9144d40094f7038ac58d5b..56081a1d3bc5362a6797a2aeca2d2516f74689f6 100644
 | 
| --- a/base/memory/manual_constructor.h
 | 
| +++ b/base/memory/manual_constructor.h
 | 
| @@ -18,6 +18,7 @@
 | 
|  
 | 
|  #include <stddef.h>
 | 
|  
 | 
| +#include "base/compiler_specific.h"
 | 
|  #include "base/memory/aligned_memory.h"
 | 
|  
 | 
|  namespace base {
 | 
| @@ -33,11 +34,7 @@ class ManualConstructor {
 | 
|    // Support users creating arrays of ManualConstructor<>s.  This ensures that
 | 
|    // the array itself has the correct alignment.
 | 
|    static void* operator new[](size_t size) {
 | 
| -#if defined(COMPILER_MSVC)
 | 
| -    return AlignedAlloc(size, __alignof(Type));
 | 
| -#else
 | 
| -    return AlignedAlloc(size, __alignof__(Type));
 | 
| -#endif
 | 
| +    return AlignedAlloc(size, ALIGNOF(Type));
 | 
|    }
 | 
|    static void operator delete[](void* mem) {
 | 
|      AlignedFree(mem);
 | 
| @@ -56,56 +53,9 @@ class ManualConstructor {
 | 
|    inline Type& operator*() { return *get(); }
 | 
|    inline const Type& operator*() const { return *get(); }
 | 
|  
 | 
| -  // You can pass up to eight constructor arguments as arguments of Init().
 | 
| -  inline void Init() {
 | 
| -    new(space_.void_data()) Type;
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1>
 | 
| -  inline void Init(const T1& p1) {
 | 
| -    new(space_.void_data()) Type(p1);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2>
 | 
| -  inline void Init(const T1& p1, const T2& p2) {
 | 
| -    new(space_.void_data()) Type(p1, p2);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3, typename T4>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3, p4);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3, typename T4, typename T5>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
 | 
| -                   const T5& p5) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3, p4, p5);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3, typename T4, typename T5,
 | 
| -            typename T6>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
 | 
| -                   const T5& p5, const T6& p6) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3, p4, p5, p6);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3, typename T4, typename T5,
 | 
| -            typename T6, typename T7>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
 | 
| -                   const T5& p5, const T6& p6, const T7& p7) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3, p4, p5, p6, p7);
 | 
| -  }
 | 
| -
 | 
| -  template <typename T1, typename T2, typename T3, typename T4, typename T5,
 | 
| -            typename T6, typename T7, typename T8>
 | 
| -  inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
 | 
| -                   const T5& p5, const T6& p6, const T7& p7, const T8& p8) {
 | 
| -    new(space_.void_data()) Type(p1, p2, p3, p4, p5, p6, p7, p8);
 | 
| +  template <typename... Ts>
 | 
| +  inline void Init(const Ts&... params) {
 | 
| +    new(space_.void_data()) Type(params...);
 | 
|    }
 | 
|  
 | 
|    inline void Destroy() {
 | 
| @@ -113,11 +63,7 @@ class ManualConstructor {
 | 
|    }
 | 
|  
 | 
|   private:
 | 
| -#if defined(COMPILER_MSVC)
 | 
| -  AlignedMemory<sizeof(Type), __alignof(Type)> space_;
 | 
| -#else
 | 
| -  AlignedMemory<sizeof(Type), __alignof__(Type)> space_;
 | 
| -#endif
 | 
| +  AlignedMemory<sizeof(Type), ALIGNOF(Type)> space_;
 | 
|  };
 | 
|  
 | 
|  }  // namespace base
 | 
| 
 |