I think that should be consistent with the deduction mechanism proposed
in the DIP: foo is struct not in scope until template foo(T) is instantiated.
No it is not. The DIP states "find all constructors".
it said 'Find all matching class/struct types in scope', isn't that enough or am I missing something?
To clarify, I've added 3 out of scope structs named A in the example section to clarify that they won't be included in the overload set.
see the ones marked '//not in scope'