#ifndef _LIBCXX_ALLOCATOR_
#define _LIBCXX_ALLOCATOR_
+#include "_libcxx_helpers.h"
+
+#include "new"
#include "cstddef"
+#include "utility"
namespace std {
return ((size_type)-1) / sizeof(value_type);
}
void construct( pointer p, const_reference val ) {
- ::new ((void*)p) value_type (val);
+ new ((void*)p) value_type (val);
}
// C++11
- //template<class U, class... Args>
- //void construct( U* p, Args&&... args ) {
- // ::new ((void*)p) U (forward<Args>(args));
- //}
+ #if _CXX11_AVAIL
+ template<class U, class... Args>
+ void construct( U* p, Args&&... args ) {
+ ::new ((void*)p) U (::std::forward<Args>(args)...);
+ }
+ #endif
void destroy(pointer p) {
p->~value_type();
}