https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103499
Mark Millard <markmigm at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |markmigm at gmail dot com --- Comment #1 from Mark Millard <markmigm at gmail dot com> --- I see this in G++ 12.2.0 on FreeBSD. Reduced to a small example below. Compiled via: // g++12 -std=c++20 -fmodules-ts -xc++-system-header type_traits // g++12 -std=c++20 -fmodules-ts -xc++ -c gpp12_module_iostream_failure.cppm // g++12 -freport-bug -std=c++20 -fmodules-ts -c gpp12_module_iostream_failure.cpp # more gpp12_module_is_nothrow_constructible_v_failure.cppm export module derived_interface; export struct base { virtual ~base() noexcept = default; }; export struct derived : base { }; # more /tmp/ccrTCTqv.out // Target: aarch64-portbld-freebsd14.0 // Configured with: /wrkdirs/usr/ports/lang/gcc12/work/gcc-12.2.0/configure --disable-multilib --disable-bootstrap --disable-nls --enable-gnu-indirect-function --enable-host-shared --enable-plugin --libdir=/usr/local/lib/gcc12 --libexecdir=/usr/local/libexec/gcc12 --program-suffix=12 --with-as=/usr/local/bin/as --with-gmp=/usr/local --with-gxx-include-dir=/usr/local/lib/gcc12/include/c++/ --with-gxx-libcxx-include-dir=/usr/include/c++/v1 --with-ld=/usr/local/bin/ld --with-pkgversion='FreeBSD Ports Collection' --with-system-zlib --without-zstd --enable-languages=c,c++,objc,fortran,jit --prefix=/usr/local --localstatedir=/var --mandir=/usr/local/man --infodir=/usr/local/share/info/gcc12 --build=aarch64-portbld-freebsd14.0 // Thread model: posix // Supported LTO compression algorithms: zlib // gcc version 12.2.0 (FreeBSD Ports Collection) // // In module /usr/local/lib/gcc12/include/c++/type_traits, imported at gpp12_module_is_nothrow_constructible_v_failure.cpp:7: // /usr/local/lib/gcc12/include/c++/type_traits: In substitution of 'template<class _Tp, class ... _Args> using __is_nothrow_constructible_impl = std::__bool_constant<__is_nothrow_constructible(_Tp)> [with _Tp = derived@derived_interface; _Args = {}]': // /usr/local/lib/gcc12/include/c++/type_traits:1047:12: required from 'struct std::is_nothrow_constructible<derived@derived_interface>' // /usr/local/lib/gcc12/include/c++/type_traits:3243:46: required from 'constexpr const bool std::is_nothrow_constructible_v<derived@derived_interface>' // gpp12_module_is_nothrow_constructible_v_failure.cpp:11:11: required from here // /usr/local/lib/gcc12/include/c++/type_traits:1041:11: error: invalid use of non-static member function 'virtual constexpr derived@derived_interface::~derived()' // 1041 | using __is_nothrow_constructible_impl // | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // In module derived_interface, imported at gpp12_module_is_nothrow_constructible_v_failure.cpp:5: // gpp12_module_is_nothrow_constructible_v_failure.cppm:10:15: note: declared here // 10 | export struct derived : base // | ^~~~~~~ // /usr/local/lib/gcc12/include/c++/type_traits:1041: confused by earlier errors, bailing out // /usr/local/libexec/gcc12/gcc/aarch64-portbld-freebsd14.0/12.2.0/cc1plus -quiet gpp12_module_is_nothrow_constructible_v_failure.cpp -quiet -dumpbase gpp12_module_is_nothrow_constructible_v_failure.cpp -dumpbase-ext .cpp -mlittle-endian -mabi=lp64 -std=c++20 -freport-bug -fmodules-ts -o - -frandom-seed=0 -fdump-noaddr # 0 "gpp12_module_is_nothrow_constructible_v_failure.cpp" # 0 "<built-in>" # 0 "<command-line>" # 1 "gpp12_module_is_nothrow_constructible_v_failure.cpp" import derived_interface; import "/usr/local/lib/gcc12/include/c++/type_traits"; void test() { if (std::is_nothrow_constructible_v<derived>); }