On Wednesday, 14 December 2016 at 17:28:57 UTC, Andrei
Alexandrescu wrote:
On 12/14/2016 12:07 PM, David Gileadi wrote:
The above rule doesn't cover non-template function
declarations like the
`process` example in the DIP, however. Are they an important
enough use
case to justify new syntax?
I suspect 90% of all uses will be straight definitions of
template functions or template structs/classes. So by that
estimate we should be in good shape.
However, looking inside the definition in order to look up
names in its declarations breaks the rule of least
astonishment. Making the import part of the syntactical unit of
the declaration seems to be the path of least resistance.
It also doesn't work with function prototypes. With the proposed
syntax, you can do
int foo(SysTime st) import(std.datetime);
but if the compiler has to look into the function body to get at
the import, then a prototype like this would be out of luck.
- Jonathan M Davis