mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-25 21:28:38 +00:00
[C++] Switch flatc to --cpp-std c++11 C++ code generator (#6306)
Prior to this commit the default C++ code generator was `c++0x`. A code generated with `c++0x` code-gen might have a vulnerability (undefined behavior) connected evolution of enums in a schema. This UB could break the backward compatibility if previously generated code casts an unknown enumerator to enum type that knows nothing about future enumerators added to the schema. The main differences between `c++0x` and `c++11`: - generated enums use explicitly declared underlying type; - generated object-API tables don't declare default ctor() explicitly, instead of it default data member initializers are generated. Please use `flatc --cpp-std c++0x` option for backward compatibility with old compilers.
This commit is contained in:
@@ -19,26 +19,16 @@ inline const flatbuffers::TypeTable *MonsterExtraTypeTable();
|
||||
|
||||
struct MonsterExtraT : public flatbuffers::NativeTable {
|
||||
typedef MonsterExtra TableType;
|
||||
double d0;
|
||||
double d1;
|
||||
double d2;
|
||||
double d3;
|
||||
float f0;
|
||||
float f1;
|
||||
float f2;
|
||||
float f3;
|
||||
std::vector<double> dvec;
|
||||
std::vector<float> fvec;
|
||||
MonsterExtraT()
|
||||
: d0(std::numeric_limits<double>::quiet_NaN()),
|
||||
d1(std::numeric_limits<double>::quiet_NaN()),
|
||||
d2(std::numeric_limits<double>::infinity()),
|
||||
d3(-std::numeric_limits<double>::infinity()),
|
||||
f0(std::numeric_limits<float>::quiet_NaN()),
|
||||
f1(std::numeric_limits<float>::quiet_NaN()),
|
||||
f2(std::numeric_limits<float>::infinity()),
|
||||
f3(-std::numeric_limits<float>::infinity()) {
|
||||
}
|
||||
double d0 = std::numeric_limits<double>::quiet_NaN();
|
||||
double d1 = std::numeric_limits<double>::quiet_NaN();
|
||||
double d2 = std::numeric_limits<double>::infinity();
|
||||
double d3 = -std::numeric_limits<double>::infinity();
|
||||
float f0 = std::numeric_limits<float>::quiet_NaN();
|
||||
float f1 = std::numeric_limits<float>::quiet_NaN();
|
||||
float f2 = std::numeric_limits<float>::infinity();
|
||||
float f3 = -std::numeric_limits<float>::infinity();
|
||||
std::vector<double> dvec{};
|
||||
std::vector<float> fvec{};
|
||||
};
|
||||
|
||||
inline bool operator==(const MonsterExtraT &lhs, const MonsterExtraT &rhs) {
|
||||
@@ -261,7 +251,7 @@ inline flatbuffers::Offset<MonsterExtra> CreateMonsterExtraDirect(
|
||||
flatbuffers::Offset<MonsterExtra> CreateMonsterExtra(flatbuffers::FlatBufferBuilder &_fbb, const MonsterExtraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
|
||||
|
||||
inline MonsterExtraT *MonsterExtra::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
|
||||
flatbuffers::unique_ptr<MyGame::MonsterExtraT> _o = flatbuffers::unique_ptr<MyGame::MonsterExtraT>(new MonsterExtraT());
|
||||
auto _o = std::unique_ptr<MonsterExtraT>(new MonsterExtraT());
|
||||
UnPackTo(_o.get(), _resolver);
|
||||
return _o.release();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user