On Wed, May 16, 2012 at 4:59 AM, John Belmonte <john@neggie.net> wrote:
On Tuesday, 15 May 2012 at 05:02:20 UTC, Timon Gehr wrote:
On 05/15/2012 04:28 AM, John Belmonte wrote:
C API's often use a opaque struct pointer as a handle. Mapping such a
struct to D using a forward declaration, I noticed that UFCS doesn't work:

struct State;
...
State* s = new_state();
foo(s); // ok
s.foo(); // compile error

Error detail:

Error: struct State is forward referenced when looking for 'foo'
Error: struct State is forward referenced when looking for 'opDot'
Error: struct State is forward referenced when looking for 'opDispatch'

I'm wondering if anything would be harmed by removing this restriction.

As a workaround I can use "struct State {}", but that feels wrong.


This is a compiler bug. You can report it here: http://d.puremagic.com/issues/

Thanks-- filed http://d.puremagic.com/issues/show_bug.cgi?id=8104.


voted up

-- 
Bye,
Gor Gyolchanyan.