Overloading external functions for use in a separate module and... uniform function call syntax!
Atash
nope at nope.nope
Tue Aug 20 21:54:59 PDT 2013
Some of you StackOverflow-folks may have already seen this
question. That said...
http://stackoverflow.com/questions/18320610/overloading-external-function-for-use-in-a-separate-module
That describes the question. Now... Andrei Alexandrescu was
awesome enough to throw me a bone, but... no dice. Under the
assumption that the double-spacing between the `runrun` decldef
and the `import mod_a` represents a separation of files, GDC
4.8.1 spits out "template mod.run does not match any function
template declaration. Candidates are:" <the `run` decldef that
doesn't accept doubles/>.
Given the feel of the situation, I wanted to check with
dlang.org-folk to make sure that this isn't a hole I've
inadvertently fallen into as far as D features go with respect to
uniform function call syntax and the semantics surrounding it.
For the sake of discussion, I'm modifying my question a little
bit... Let's say I have some function in some module:
= BEGIN CODE =
== file mod.d
module mod;
void doStuff(T)(T v) { v.doOtherStuff(); }
== file adooblydoo.d
module adooblydoo;
import mod;
struct A;
doOtherStuff(A a) { ... }
void main() { A a; doStuff(a); }
= END CODE =
This fails to compile with both DMD 2.063 and GDC 4.8.1 informing
me that doOtherStuff is an undefined identifier while
instantiating doStuff.
Given that Andrei Alexandrescu gave me an answer implying that at
least the C++-STL-style of calling was possible, I'm inclined to
guess that this is either a bugfeature or at the very least an
obscure feature with respect to what I'd assume to be the
intended semantics of uniform function call syntax.
Soooooo... What is this behavior?
(( THANKS FOR READING THAT WHOLE THING [if you didn't and you're
reading this little message, I take the thanks back and instead
chuck silly putty at your face] ))
More information about the Digitalmars-d-learn
mailing list