File tree Expand file tree Collapse file tree 3 files changed +12
-13
lines changed Expand file tree Collapse file tree 3 files changed +12
-13
lines changed Original file line number Diff line number Diff line change @@ -119,12 +119,12 @@ struct EquipmentUnion {
119
119
void Reset ();
120
120
121
121
#ifndef FLATBUFFERS_CPP98_STL
122
- template <typename T>
122
+ template <typename T, typename RT = typename std::remove_reference<T>::type >
123
123
void Set (T&& val) {
124
124
Reset ();
125
- type = EquipmentTraits<typename T ::TableType>::enum_value;
125
+ type = EquipmentTraits<typename RT ::TableType>::enum_value;
126
126
if (type != Equipment_NONE) {
127
- value = new T (std::forward<T>(val));
127
+ value = new RT (std::forward<T>(val));
128
128
}
129
129
}
130
130
#endif // FLATBUFFERS_CPP98_STL
Original file line number Diff line number Diff line change @@ -1096,13 +1096,12 @@ class CppGenerator : public BaseGenerator {
1096
1096
code_ += " " ;
1097
1097
if (!enum_def.uses_multiple_type_instances ) {
1098
1098
code_ += " #ifndef FLATBUFFERS_CPP98_STL" ;
1099
- code_ += " template <typename T>" ;
1099
+ code_ += " template <typename T, typename RT = typename std::remove_reference<T>::type >" ;
1100
1100
code_ += " void Set(T&& val) {" ;
1101
1101
code_ += " Reset();" ;
1102
- code_ +=
1103
- " type = {{NAME}}Traits<typename T::TableType>::enum_value;" ;
1102
+ code_ += " type = {{NAME}}Traits<typename RT::TableType>::enum_value;" ;
1104
1103
code_ += " if (type != {{NONE}}) {" ;
1105
- code_ += " value = new T (std::forward<T>(val));" ;
1104
+ code_ += " value = new RT (std::forward<T>(val));" ;
1106
1105
code_ += " }" ;
1107
1106
code_ += " }" ;
1108
1107
code_ += " #endif // FLATBUFFERS_CPP98_STL" ;
Original file line number Diff line number Diff line change @@ -207,12 +207,12 @@ struct AnyUnion {
207
207
void Reset ();
208
208
209
209
#ifndef FLATBUFFERS_CPP98_STL
210
- template <typename T>
210
+ template <typename T, typename RT = typename std::remove_reference<T>::type >
211
211
void Set (T&& val) {
212
212
Reset ();
213
- type = AnyTraits<typename T ::TableType>::enum_value;
213
+ type = AnyTraits<typename RT ::TableType>::enum_value;
214
214
if (type != Any_NONE) {
215
- value = new T (std::forward<T>(val));
215
+ value = new RT (std::forward<T>(val));
216
216
}
217
217
}
218
218
#endif // FLATBUFFERS_CPP98_STL
@@ -348,12 +348,12 @@ struct AnyUniqueAliasesUnion {
348
348
void Reset ();
349
349
350
350
#ifndef FLATBUFFERS_CPP98_STL
351
- template <typename T>
351
+ template <typename T, typename RT = typename std::remove_reference<T>::type >
352
352
void Set (T&& val) {
353
353
Reset ();
354
- type = AnyUniqueAliasesTraits<typename T ::TableType>::enum_value;
354
+ type = AnyUniqueAliasesTraits<typename RT ::TableType>::enum_value;
355
355
if (type != AnyUniqueAliases_NONE) {
356
- value = new T (std::forward<T>(val));
356
+ value = new RT (std::forward<T>(val));
357
357
}
358
358
}
359
359
#endif // FLATBUFFERS_CPP98_STL
You can’t perform that action at this time.
0 commit comments