Как нам реорганизовать С++

Apr 24, 2024 12:47



Понадобилось мне давеча сделать нечто хитрое с помощью взаимно-рекурсивных классов.



Опуская непринципиальные для обсуждения детали, я написал нечто вроде

#include
#include

struct Foo;

template struct BarT { T foo1, foo2; }; // !!!
using Bar = BarT; // !!!

struct Foo { std::vector bar; };

// Демонстрация, что компилируется и работает
int main() {
Bar bar;
std::cout << sizeof(Foo) << ' ' << sizeof(Bar) << '\n';
}

А теперь внимание, вопрос: какого бы, собственно, рожна нас в XXI веке заставляют прыгать через обруч, вместо того, чтобы просто писать, взамен отмеченного !!!,

struct Bar { Foo foo1, foo2; };

Что мешает компилятору, при виде недоопределенных классов внутри определяемого класса, автоматически делать вид, что это был темплейт?

work

Previous post Next post
Up