Closed
Bug 1713957
Opened 4 years ago
Closed 4 years ago
gcc error: mozilla::detail::MaybeStorage[...] is implicitly deleted because the default definition would be ill-formed
Categories
(Core :: MFBT, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1710235
People
(Reporter: spectre, Unassigned)
References
(Regression)
Details
(Keywords: regression)
Detected in Firefox 89 with gcc 11.1.1 on Fedora, but appears to occur on trunk as well. The exact compilation error is
9:54.84 In file included from Unified_cpp_components_gtest0.cpp:2:
9:54.84 /home/spectre/src/mozilla-release/intl/components/gtest/TestNumberFormat.cpp: In member function ‘virtual void mozilla::intl::IntlNumberFormat_Unit_Test::TestBody()’:
9:54.84 /home/spectre/src/mozilla-release/intl/components/gtest/TestNumberFormat.cpp:141:78: error: use of deleted function ‘mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >& mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >::operator=(mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >&&)’
9:54.84 141 | NumberFormatOptions::UnitDisplay::Long));
9:54.84 | ^
9:54.84 In file included from /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/intl/NumberFormat.h:11,
9:54.84 from /home/spectre/src/mozilla-release/intl/components/gtest/TestNumberFormat.cpp:6,
9:54.84 from Unified_cpp_components_gtest0.cpp:2:
9:54.84 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/Maybe.h:348:55: note: ‘mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >& mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >::operator=(mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >&&)’ is implicitly deleted because the default definition would be ill-formed:
9:54.84 348 | class MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS Maybe
9:54.84 | ^~~~~
9:54.84 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/Maybe.h:348:55: error: use of deleted function ‘mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>& mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::operator=(mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>&&)’
9:54.84 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/Maybe.h:274:8: note: ‘mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>& mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::operator=(mozilla::detail::MaybeStorage<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>&&)’ is implicitly deleted because the default definition would be ill-formed:
9:54.84 274 | struct MaybeStorage<T, true> : MaybeStorageBase<T> {
9:54.84 | ^~~~~~~~~~~~~~~~~~~~~
9:54.84 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/Maybe.h:274:8: error: use of deleted function ‘mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>& mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::operator=(mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>&&)’
9:54.84 In file included from /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/Maybe.h:20,
9:54.84 from /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/intl/NumberFormat.h:11,
9:54.85 from /home/spectre/src/mozilla-release/intl/components/gtest/TestNumberFormat.cpp:6,
9:54.85 from Unified_cpp_components_gtest0.cpp:2:
9:54.85 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/MaybeStorageBase.h:61:8: note: ‘mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>& mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::operator=(mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>&&)’ is implicitly deleted because the default definition would be ill-formed:
9:54.85 61 | struct MaybeStorageBase<T, true> {
9:54.85 | ^~~~~~~~~~~~~~~~~~~~~~~~~
9:54.85 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/MaybeStorageBase.h:61:8: error: use of deleted function ‘mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union& mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union::operator=(mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union&&)’
9:54.85 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/MaybeStorageBase.h:65:9: note: ‘mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union& mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union::operator=(mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union&&)’ is implicitly deleted because the default definition would be ill-formed:
9:54.85 65 | union Union {
9:54.85 | ^~~~~
9:54.85 /home/spectre/src/mozilla-release/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/MaybeStorageBase.h:73:15: error: union member ‘mozilla::detail::MaybeStorageBase<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>, true>::Union::val’ with non-trivial ‘std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type) [with _T1 = std::basic_string_view<char>; _T2 = mozilla::intl::NumberFormatOptions::UnitDisplay; typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type = std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay>&&]’
9:54.85 73 | NonConstT val;
9:54.85 | ^~~
9:54.85 In file included from Unified_cpp_components_gtest0.cpp:2:
9:54.85 /home/spectre/src/mozilla-release/intl/components/gtest/TestNumberFormat.cpp:148:78: error: use of deleted function ‘mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >& mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >::operator=(mozilla::Maybe<std::pair<std::basic_string_view<char>, mozilla::intl::NumberFormatOptions::UnitDisplay> >&&)’
9:54.85 148 | NumberFormatOptions::UnitDisplay::Long));
9:54.85 | ^
9:55.14 gmake[4]: *** [/home/spectre/src/mozilla-release/config/rules.mk:676: Unified_cpp_components_gtest0.o] Error 1
9:55.14 gmake[3]: *** [/home/spectre/src/mozilla-release/config/recurse.mk:72: intl/components/gtest/target-objects] Error 2
9:55.14 gmake[3]: *** Waiting for unfinished jobs....
Provisionally marking as a regression from bug 1700336.
Comment 1•4 years ago
|
||
I can reproduce with gcc 11.1 from Debian experimental, but not with a custom build from the releases/gcc-11 branch, nor with the gcc-snapshot package from Debian experimental (which is GCC trunk as of 2021-05-27). Closing as a probable bug in GCC itself, maybe related to bug 1710235.
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INVALID
| Reporter | ||
Comment 2•4 years ago
|
||
I agree, I think this is another symptom of the same bug. Duping.
Resolution: INVALID → DUPLICATE
Updated•4 years ago
|
Has Regression Range: --- → yes
Keywords: regression
You need to log in
before you can comment on or make changes to this bug.
Description
•