auto a(int b = a) {}
auto a(int b) {}
The error when compiling the above is:
---
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
a.d(1): Error: forward reference to template a
---
Which is about 18 errors too many.
Reverse the declarations, and the error becomes a little more reasonable:
---
a.d(2): Error: forward reference to template a
a.d(2): Error: forward reference to template a
a.d(2): Error: none of the overloads of a are callable using argument types (), candidates are:
a.d(1): a.a(int b)
a.d(2): a.a(int b = a)
---
Comment #1 by robert.schadek — 2024-12-13T19:04:01Z