|
@@ -87,7 +87,7 @@ inline ExtensionSet* GetExtensionSet(MessageLite* msg, int64 extension_offset) {
|
|
|
|
|
|
template <typename Type>
|
|
template <typename Type>
|
|
inline Type* AddField(MessageLite* msg, int64 offset) {
|
|
inline Type* AddField(MessageLite* msg, int64 offset) {
|
|
- static_assert(std::is_pod<Type>::value,
|
|
|
|
|
|
+ static_assert(std::is_standard_layout<Type>::value && std::is_trivial<Type>::value,
|
|
"Do not assign");
|
|
"Do not assign");
|
|
|
|
|
|
RepeatedField<Type>* repeated = Raw<RepeatedField<Type>>(msg, offset);
|
|
RepeatedField<Type>* repeated = Raw<RepeatedField<Type>>(msg, offset);
|
|
@@ -104,7 +104,7 @@ inline std::string* AddField<std::string>(MessageLite* msg, int64 offset) {
|
|
|
|
|
|
template <typename Type>
|
|
template <typename Type>
|
|
inline void AddField(MessageLite* msg, int64 offset, Type value) {
|
|
inline void AddField(MessageLite* msg, int64 offset, Type value) {
|
|
- static_assert(std::is_pod<Type>::value,
|
|
|
|
|
|
+ static_assert(std::is_standard_layout<Type>::value && std::is_trivial<Type>::value,
|
|
"Do not assign");
|
|
"Do not assign");
|
|
*AddField<Type>(msg, offset) = value;
|
|
*AddField<Type>(msg, offset) = value;
|
|
}
|
|
}
|
|
@@ -126,7 +126,7 @@ inline Type* MutableField(MessageLite* msg, uint32* has_bits,
|
|
template <typename Type>
|
|
template <typename Type>
|
|
inline void SetField(MessageLite* msg, uint32* has_bits, uint32 has_bit_index,
|
|
inline void SetField(MessageLite* msg, uint32* has_bits, uint32 has_bit_index,
|
|
int64 offset, Type value) {
|
|
int64 offset, Type value) {
|
|
- static_assert(std::is_pod<Type>::value,
|
|
|
|
|
|
+ static_assert(std::is_standard_layout<Type>::value && std::is_trivial<Type>::value,
|
|
"Do not assign");
|
|
"Do not assign");
|
|
*MutableField<Type>(msg, has_bits, has_bit_index, offset) = value;
|
|
*MutableField<Type>(msg, has_bits, has_bit_index, offset) = value;
|
|
}
|
|
}
|