| // P2615R1 invalid declarations |
| // PR c++/107688 |
| // { dg-additional-options "-fmodules-ts" } |
| // { dg-module-cmi !bad } |
| |
| export module bad; |
| |
| extern "C++" export void foo(); // { dg-error "export-declarations are not permitted here" "" { target c++20 } } |
| |
| export template <typename T> struct S {}; |
| |
| export template <typename T> struct S<T*> {}; // { dg-error "partial specialization in unbraced export-declaration" } |
| |
| export template <> struct S<int*> {}; // { dg-error "explicit specializations are not permitted here" } |
| |
| export template struct S<int>; // { dg-error "explicit instantiations are not permitted here" } |
| |
| template <> export struct S<double>; // { dg-error "expected unqualified-id" } |
| |
| export export int x; // { dg-error ".export. may only occur once" } |
| |
| export { export int y; } // { dg-error ".export. may only occur once" } |
| |
| namespace { |
| export namespace ns {} // { dg-error "internal linkage" } |
| } |
| |
| export namespace {} // { dg-error "exporting unnamed namespace" } |