From 6b271b7ecb388bf66a90016af93b3bb1fb359265 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Mon, 23 Mar 2020 13:01:11 -0400 Subject: [PATCH] Fix Clang-trunk warnings about special members deprecated in C++20. (#5829) For example: include/flatbuffers/reflection.h:365:8: error: definition of implicit copy constructor for 'pointer_inside_vector' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy] void operator=(const pointer_inside_vector &piv); ^ It's unclear why the old code wanted to declare a public `operator=` without defining it; that just seems like a misunderstanding of the C++03 idiom for deleting a member function. And anyway, we don't *want* to delete the assignment operator; these are polymorphic types that do not follow value semantics and nobody should ever be trying to copy them. So the simplest fix is just to go back to the Rule of Zero: remove the declaration of `operator=` and let the compiler do what it wanted to do originally anyway. "The best code is no code." Also, update the generated .h files. Fixes #5649. --- include/flatbuffers/reflection.h | 1 - include/flatbuffers/reflection_generated.h | 9 --------- samples/monster_generated.h | 2 -- src/idl_gen_cpp.cpp | 5 ----- src/reflection.cpp | 2 -- tests/arrays_test_generated.h | 1 - tests/cpp17/generated_cpp17/monster_test_generated.h | 7 ------- tests/evolution_test/evolution_v1_generated.h | 3 --- tests/evolution_test/evolution_v2_generated.h | 4 ---- tests/monster_extra_generated.h | 1 - tests/monster_test_generated.h | 7 ------- tests/namespace_test/namespace_test1_generated.h | 1 - tests/namespace_test/namespace_test2_generated.h | 3 --- tests/native_type_test_generated.h | 1 - tests/union_vector/union_vector_generated.h | 2 -- 15 files changed, 49 deletions(-) diff --git a/include/flatbuffers/reflection.h b/include/flatbuffers/reflection.h index f606b7b5..1c49234f 100644 --- a/include/flatbuffers/reflection.h +++ b/include/flatbuffers/reflection.h @@ -362,7 +362,6 @@ template class pointer_inside_vector { reinterpret_cast(flatbuffers::vector_data(vec_)) + offset_); } T *operator->() const { return operator*(); } - void operator=(const pointer_inside_vector &piv); private: size_t offset_; diff --git a/include/flatbuffers/reflection_generated.h b/include/flatbuffers/reflection_generated.h index e7237ff2..cd783793 100644 --- a/include/flatbuffers/reflection_generated.h +++ b/include/flatbuffers/reflection_generated.h @@ -161,7 +161,6 @@ struct TypeBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TypeBuilder &operator=(const TypeBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -225,7 +224,6 @@ struct KeyValueBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - KeyValueBuilder &operator=(const KeyValueBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -325,7 +323,6 @@ struct EnumValBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - EnumValBuilder &operator=(const EnumValBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -448,7 +445,6 @@ struct EnumBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - EnumBuilder &operator=(const EnumBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -617,7 +613,6 @@ struct FieldBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - FieldBuilder &operator=(const FieldBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -773,7 +768,6 @@ struct ObjectBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ObjectBuilder &operator=(const ObjectBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -898,7 +892,6 @@ struct RPCCallBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - RPCCallBuilder &operator=(const RPCCallBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1007,7 +1000,6 @@ struct ServiceBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ServiceBuilder &operator=(const ServiceBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1123,7 +1115,6 @@ struct SchemaBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - SchemaBuilder &operator=(const SchemaBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/samples/monster_generated.h b/samples/monster_generated.h index 4e49d5f9..00aa70b0 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -402,7 +402,6 @@ struct MonsterBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -536,7 +535,6 @@ struct WeaponBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - WeaponBuilder &operator=(const WeaponBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index f78ee268..8c6e27c9 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -2228,11 +2228,6 @@ class CppGenerator : public BaseGenerator { code_ += " start_ = fbb_.StartTable();"; code_ += " }"; - // Assignment operator; - code_ += - " {{STRUCT_NAME}}Builder &operator=" - "(const {{STRUCT_NAME}}Builder &);"; - // Finish() function. code_ += " flatbuffers::Offset<{{STRUCT_NAME}}> Finish() {"; code_ += " const auto end = fbb_.EndTable(start_);"; diff --git a/src/reflection.cpp b/src/reflection.cpp index abe9bb5d..70267c11 100644 --- a/src/reflection.cpp +++ b/src/reflection.cpp @@ -296,8 +296,6 @@ class ResizeContext { } } - void operator=(const ResizeContext &rc); - private: const reflection::Schema &schema_; uint8_t *startptr_; diff --git a/tests/arrays_test_generated.h b/tests/arrays_test_generated.h index 30e78846..66599d18 100644 --- a/tests/arrays_test_generated.h +++ b/tests/arrays_test_generated.h @@ -264,7 +264,6 @@ struct ArrayTableBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ArrayTableBuilder &operator=(const ArrayTableBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index 359fd1a9..043c21e8 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -642,7 +642,6 @@ struct InParentNamespaceBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - InParentNamespaceBuilder &operator=(const InParentNamespaceBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -695,7 +694,6 @@ struct MonsterBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -765,7 +763,6 @@ struct TestSimpleTableWithEnumBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TestSimpleTableWithEnumBuilder &operator=(const TestSimpleTableWithEnumBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -859,7 +856,6 @@ struct StatBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - StatBuilder &operator=(const StatBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -950,7 +946,6 @@ struct ReferrableBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ReferrableBuilder &operator=(const ReferrableBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1686,7 +1681,6 @@ struct MonsterBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -2113,7 +2107,6 @@ struct TypeAliasesBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TypeAliasesBuilder &operator=(const TypeAliasesBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/evolution_test/evolution_v1_generated.h b/tests/evolution_test/evolution_v1_generated.h index 1d447ffc..25afa693 100644 --- a/tests/evolution_test/evolution_v1_generated.h +++ b/tests/evolution_test/evolution_v1_generated.h @@ -152,7 +152,6 @@ struct TableABuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableABuilder &operator=(const TableABuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -194,7 +193,6 @@ struct TableBBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableBBuilder &operator=(const TableBBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -326,7 +324,6 @@ struct RootBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - RootBuilder &operator=(const RootBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/evolution_test/evolution_v2_generated.h b/tests/evolution_test/evolution_v2_generated.h index 4e1b8404..446d9e2f 100644 --- a/tests/evolution_test/evolution_v2_generated.h +++ b/tests/evolution_test/evolution_v2_generated.h @@ -176,7 +176,6 @@ struct TableABuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableABuilder &operator=(const TableABuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -233,7 +232,6 @@ struct TableBBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableBBuilder &operator=(const TableBBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -282,7 +280,6 @@ struct TableCBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableCBuilder &operator=(const TableCBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -443,7 +440,6 @@ struct RootBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - RootBuilder &operator=(const RootBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/monster_extra_generated.h b/tests/monster_extra_generated.h index 3b4ee27a..231d6c12 100644 --- a/tests/monster_extra_generated.h +++ b/tests/monster_extra_generated.h @@ -197,7 +197,6 @@ struct MonsterExtraBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterExtraBuilder &operator=(const MonsterExtraBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index ad87ffe3..219e8357 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -802,7 +802,6 @@ struct InParentNamespaceBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - InParentNamespaceBuilder &operator=(const InParentNamespaceBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -858,7 +857,6 @@ struct MonsterBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -932,7 +930,6 @@ struct TestSimpleTableWithEnumBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TestSimpleTableWithEnumBuilder &operator=(const TestSimpleTableWithEnumBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1032,7 +1029,6 @@ struct StatBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - StatBuilder &operator=(const StatBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1127,7 +1123,6 @@ struct ReferrableBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ReferrableBuilder &operator=(const ReferrableBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -1911,7 +1906,6 @@ struct MonsterBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MonsterBuilder &operator=(const MonsterBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -2353,7 +2347,6 @@ struct TypeAliasesBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TypeAliasesBuilder &operator=(const TypeAliasesBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/namespace_test/namespace_test1_generated.h b/tests/namespace_test/namespace_test1_generated.h index feae671a..72122768 100644 --- a/tests/namespace_test/namespace_test1_generated.h +++ b/tests/namespace_test/namespace_test1_generated.h @@ -153,7 +153,6 @@ struct TableInNestedNSBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableInNestedNSBuilder &operator=(const TableInNestedNSBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/namespace_test/namespace_test2_generated.h b/tests/namespace_test/namespace_test2_generated.h index bb6844b8..ccb8a934 100644 --- a/tests/namespace_test/namespace_test2_generated.h +++ b/tests/namespace_test/namespace_test2_generated.h @@ -138,7 +138,6 @@ struct TableInFirstNSBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableInFirstNSBuilder &operator=(const TableInFirstNSBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -232,7 +231,6 @@ struct TableInCBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - TableInCBuilder &operator=(const TableInCBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -310,7 +308,6 @@ struct SecondTableInABuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - SecondTableInABuilder &operator=(const SecondTableInABuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/native_type_test_generated.h b/tests/native_type_test_generated.h index 91114264..d591a4e9 100644 --- a/tests/native_type_test_generated.h +++ b/tests/native_type_test_generated.h @@ -103,7 +103,6 @@ struct ApplicationDataBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - ApplicationDataBuilder &operator=(const ApplicationDataBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h index a03f7227..f93dbf02 100644 --- a/tests/union_vector/union_vector_generated.h +++ b/tests/union_vector/union_vector_generated.h @@ -314,7 +314,6 @@ struct AttackerBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - AttackerBuilder &operator=(const AttackerBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); @@ -439,7 +438,6 @@ struct MovieBuilder { : fbb_(_fbb) { start_ = fbb_.StartTable(); } - MovieBuilder &operator=(const MovieBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end);