https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122922
Nathaniel Shead <nshead at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2025-11-30
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #2 from Nathaniel Shead <nshead at gcc dot gnu.org> ---
Confirmed. Mostly reduced:
// m.hpp
template <typename> struct allocator {
friend void operator==(allocator, allocator) {}
};
struct reverse_iterator operator==(reverse_iterator, reverse_iterator);
struct string {
template <typename T> void foo() { T{} == 0; }
};
// m.cpp
module;
#include "m.hpp"
export module M;
export using ::string;
export using ::allocator;
// a.cpp
export module VF:Tensor;
import M;
template<int d, int r1> struct TTensor {
TTensor<d, r1 - 1u> TensorArr[d];
void Read(string s);
};
template<int d> struct TTensor<d, 0u> {};
// b.cpp
module;
#include "m.hpp"
export module VF;
export import :Tensor;
int TCara(allocator<TTensor<2, 1> const *> PtoPtrVec_);
int r = TCara(allocator<TTensor<2, 1> const*>{});
export template<int d, int r>
void TCampo() { new TTensor<d, r>(); }
// c.cpp
import VF;
int main() {
TCampo<2, 1>();
}
$ g++ -std=c++17 -fmodules -S m.cpp [abc].cpp
In module VF, imported at c.cpp:1:
b.cpp: In instantiation of ‘void TCampo@VF() [with int d = 2; int r = 1]’:
required from here
c.cpp:4:15:
4 | TCampo<2, 1>();
| ~~~~~~~~~~~~^~
b.cpp:10:17: error: value-initialization of incomplete type ‘TTensor@VF<2, 0>
[2]’
10 | void TCampo() { new TTensor<d, r>(); }
| ^~~~~~~~~~~~~~~~~~~