https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94033

            Bug ID: 94033
           Summary: is_trivially_copy_constructible<> fails with compiler
                    error on complicated object with private default
                    constructor
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: a...@cloudius-systems.com
  Target Milestone: ---

gcc 10 regression: the same source file builds in gcc 9. The preprocessed file
from gcc 10 fails on gcc 9 with the same error, so the bug is likely in
libstdc++.

Error trail:

g++ -MD -MT build/dev/database.o -MF build/dev/database.o.d
-I/home/avi/scylla/seastar/include
-I/home/avi/scylla/build/dev/seastar/gen/include -std=gnu++17 -U_FORTIFY_SOURCE
-Wno-maybe-uninitialized -Werror=unused-result -fstack-clash-protection
-fconcepts -DSEASTAR_API_LEVEL=2 -DSEASTAR_HAVE_GCC6_CONCEPTS
-DSEASTAR_USE_STD_OPTIONAL_VARIANT_STRINGVIEW -DSEASTAR_TYPE_ERASE_MORE
-DFMT_LOCALE -DFMT_SHARED -I/usr/include/p11-kit-1 -O1
-DSEASTAR_ENABLE_ALLOC_FAILURE_INJECTION -I. -I build/dev/gen -march=westmere
-DBOOST_TEST_DYN_LINK   -fvisibility=hidden -Wall -Werror -Wno-mismatched-tags
-Wno-maybe-uninitialized -Wno-tautological-compare -Wno-missing-braces
-Wno-misleading-indentation -Wno-overflow -Wno-noexcept-type
-Wno-nonnull-compare -Wno-error=cpp -Wno-ignored-attributes
-Wno-overloaded-virtual -Wno-stringop-overflow
-Wno-error=deprecated-declarations -DXXH_PRIVATE_API -DSEASTAR_TESTING_MAIN
-DHAVE_LIBSYSTEMD=1 -DHAVE_LZ4_COMPRESS_DEFAULT  -c -o build/dev/database.o
database.cc
In file included from /usr/include/c++/10/bits/move.h:57,
                 from /usr/include/c++/10/bits/stl_pair.h:59,
                 from /usr/include/c++/10/utility:70,
                 from
/home/avi/scylla/seastar/include/seastar/core/shared_ptr.hh:25,
                 from dht/i_partitioner.hh:43,
                 from database.hh:25,
                 from database.cc:22:
/usr/include/c++/10/type_traits: In instantiation of ‘struct
std::__is_nt_default_constructible_atom<mutation>’:
/usr/include/c++/10/type_traits:976:12:   required from ‘struct
std::__is_nt_default_constructible_impl<mutation, false>’
/usr/include/c++/10/type_traits:138:12:   required from ‘struct
std::__and_<std::__is_constructible_impl<mutation>,
std::__is_nt_default_constructible_impl<mutation, false> >’
/usr/include/c++/10/type_traits:987:12:   required from ‘struct
std::is_nothrow_default_constructible<mutation>’
/usr/include/c++/10/type_traits:133:12:   required from ‘struct
std::__and_<std::is_nothrow_default_constructible<mutation> >’
/usr/include/c++/10/tuple:623:2:   required from ‘constexpr
std::tuple<_Elements>::tuple() [with _Dummy = void; typename
std::enable_if<std::_TupleConstraints<std::is_void<_Dummy>::value, _Elements
...>::__is_explicitly_default_constructible(), bool>::type <anonymous> = false;
_Elements = {mutation}]’
/usr/include/c++/10/type_traits:1183:30:   required from ‘struct
std::is_trivially_constructible<std::tuple<mutation> >’
/home/avi/scylla/seastar/include/seastar/core/future.hh:210:51:   required from
‘constexpr const bool seastar::internal::can_inherit<std::tuple<mutation> >’
/home/avi/scylla/seastar/include/seastar/core/future.hh:217:44:   required from
‘struct seastar::internal::uninitialized_wrapper<std::tuple<mutation> >’
/home/avi/scylla/seastar/include/seastar/core/future.hh:395:8:   required from
‘struct seastar::future_state<mutation>’
/home/avi/scylla/seastar/include/seastar/core/future.hh:962:24:   required from
‘class seastar::future<mutation>’
database.cc:45:126:   required from here
/usr/include/c++/10/type_traits:962:47: error: ‘constexpr mutation::mutation()’
is private within this context
  962 |     : public integral_constant<bool, noexcept(_Tp())>
      |                                               ^~~~~
In file included from database.hh:65,
                 from database.cc:22:
mutation.hh:49:5: note: declared private here
   49 |     mutation() = default;
      |     ^~~~~~~~


I have a reproducer, but it is 400k lines long after preprocessing. I'll spend
some time minimizing it and post it.

Reply via email to