Return by 'ref' problems...

Manu turkeyman at gmail.com
Sat May 5 03:10:54 PDT 2012


On 5 May 2012 09:09, Artur Skawina <art.08.09 at gmail.com> wrote:

> On 05/05/12 01:32, Manu wrote:
> > On 4 May 2012 21:51, Artur Skawina <art.08.09 at gmail.com <mailto:
> art.08.09 at gmail.com>> wrote:
> >
> >     On 05/04/12 15:57, Manu wrote:
> >     > Yeah I really hate this too. I'd like to see const(T) strictly
> enforced, considering the potential for ambiguity in other situations.
> >     >
> >     > But I'm still stuck! :(
> >     > How can I do what I need to do?
> >
> >     If 'auto' is not an option:
> >
> >       alias ref const(S) function() FT;
> >       FT fp;
> >
> >     (it's needed for things like 'extern (C)' too)
> >
> >
> > Huzzah! This is indeed the solution! I haven't seen another solution
> that works. now I just need to make sure I generate a unique name for the
> alias...
> >
> > I don't think this is needed for extern (C), I declare extern (C)
> function pointers all the time without any trick..?
>
>    void f(extern (C) int function(double) a);
>

Hmm, actually, this makes me question my code...

struct Thing
{
  extern (C) void function() funcPtr;
}

Have I declared a pointer to an extern(C) function, or have I declared an
extern(C) variable funcPtr that is a regular D-call function?
extern(C) variables only really make sense in the global scope, where they
would have C-style name mangling applied...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120505/63b648e2/attachment.html>


More information about the Digitalmars-d mailing list