variable x cannot be read at compile time (ctfe)
monarch_dodra
monarchdodra at gmail.com
Mon Dec 17 03:45:05 PST 2012
On Monday, 17 December 2012 at 09:42:50 UTC, maarten van damme
wrote:
> I finally got around trying to finish my sudoksolver and I'm
> pretty
> happy with the result, except one little piece that screams for
> ctfe
> but I never seem to get it working.
> I always get "variable x cannot be read at compile time" in
> this method :
>
> auto bitsetToRange(in SudokuCell x) {
> return boardSide.iota().filter!(i => (x >> i) &
> 1)().map!(x=>x+1)();
> }
>
> with SudokuCell beeing declared as:
> alias ushort SudokuCell;
>
> I want to generate a dynamic array with all return values form
> this
> method with x ranging from 0..sudokuCell.size.
> Why is it complaining x cannot be read at compile time while it
> is
> passed at compile time?
Probably because you declared "boardside" as an "auto"? You need
to declare it as immutable or enum. Can't add much to it without
some context.
FYI: As much as I love ufcs, "boardSide.iota()" makes no sense to
me. It took me a minute to realize what was going on. I'd really
write it as:
return iota(boardSide).filter!(i => (x >> i) &
1)().map!(x=>x+1)();
More information about the Digitalmars-d-learn
mailing list