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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2021-03-05 00:00:00         |2021-9-14
           Keywords|                            |rejects-valid

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This breaks modules, and makes it very difficult to export a 'std' module, as
proposed by https://wg21.link/p2412r0

export module std;

// define it
namespace std
{
  class type_info;
}

// exports
export namespace std { };

namespace std
{
  export class type_info;
}

g++ -fmodules-ts -fmodule-only std.cc

std.cc:6:9: error: cannot declare 'struct std::type_info' in a different module
    6 |   class type_info;
      |         ^~~~~~~~~
<built-in>: note: declared here
std.cc:14:16: error: cannot declare 'struct std::type_info' in a different
module
   14 |   export class type_info;
      |                ^~~~~~~~~
<built-in>: note: declared here
std.cc:1:8: warning: not writing module 'std' due to errors
    1 | export module std;
      |        ^~~~~~


As a stop-gap, could we maybe suppress the implicit definition when
-fmodules-ts is in use? Otherwise I am unable to prototype the proposal.

Reply via email to