On Friday, 28 February 2014 at 23:06:24 UTC, Robin wrote:
sorry for the double post but I can't find an edit button.

Don't worry, there is none. Replying to yourself is proper
etiquette around here.

I have managed to write a custom ForwardRange based on your code as I wished it to behave. However, the assertion fails on compilation, now. The only thing I have changed is that I have added a constructor as well as changing the type of T[] to Matrix!T pointer type.

The general layout stayed the same and I don't think that a constructor may break the ForwardRange interface.

Do you know what's wrong here?

Here is the code:
http://dpaste.dzfl.pl/8718b09cb825

Lines 43, 44:
---
static assert(isForwardRange!(ColumnVectorForwardRange!double(new
Matrix!double(5, 5), 2)));
//static assert(isForwardRange!(ColumnVectorForwardRange!double));
---
isForwardRange works on types, not values. The commented version
is correct.

Besides that ... are there nicer workarounds to prevent using matrix by value instead of storing it as a pointer which is kind of unsafe?

Make it a class.

Reply via email to