diff options
author | Tom Hughes <tom@airtime.com> | 2015-07-29 13:00:06 -0700 |
---|---|---|
committer | Tom Hughes <tom@airtime.com> | 2015-07-29 13:00:06 -0700 |
commit | 56327ecc02943c1cf0e218caad3dc82231717a0b (patch) | |
tree | 1195b44abae8a1ce0892a506b2d152b846bdaf94 /src/google | |
parent | 6d72d12575c3fa764f27b91985c5a5c79bc4ccd6 (diff) | |
download | protobuf-56327ecc02943c1cf0e218caad3dc82231717a0b.tar.gz protobuf-56327ecc02943c1cf0e218caad3dc82231717a0b.tar.bz2 protobuf-56327ecc02943c1cf0e218caad3dc82231717a0b.zip |
Fix compilation error when using C++11.
The issue occurs when the template type deduction results in NodeType
being const.
Shortened version of compile error:
no matching function for call to 'operator new'
new (p) NodeType(std::forward<Args>(args)...);
candidate function not viable: no known conversion from 'const
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > *' to 'void *' for 2nd argument; take the
address of the argument with &
inline __attribute__ ((__visibility__("hidden"), __always_inline__))
void* operator new (std::size_t, void* __p) noexcept {return __p;}
Diffstat (limited to 'src/google')
-rw-r--r-- | src/google/protobuf/map.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/google/protobuf/map.h b/src/google/protobuf/map.h index 163ce9dc..d928b7a7 100644 --- a/src/google/protobuf/map.h +++ b/src/google/protobuf/map.h @@ -172,7 +172,7 @@ class Map { !defined(GOOGLE_PROTOBUF_OS_NACL) && !defined(GOOGLE_PROTOBUF_OS_ANDROID) template<class NodeType, class... Args> void construct(NodeType* p, Args&&... args) { - new (p) NodeType(std::forward<Args>(args)...); + new ((void*)p) NodeType(std::forward<Args>(args)...); } template<class NodeType> |