On Monday, 29 April 2013 at 23:49:18 UTC, JR wrote:
[...]
http://dpaste.dzfl.pl/9273fb92
Can't it be done neater than this? It *does* work now, but it's
incredibly hacky and I'm not satisfied with it. The whole
'passing a function pointer to a function that casts the
signature and invokes it' deal makes me cringe. :>
To get rid of the cast:
13c13
< void applyFunc(F* func, E[I][T] matrix) {
---
void applyFunc(F func, E[I][T] matrix) {
16c16
< func(major, minor, &element);
---
func(major, minor, element);
29,30c29,30
< void run(T major, I minor, F* func) {
< (cast(void function(T,I))*func)(major, minor);
---
void run(T major, I minor, F func) {
func(major, minor);
52c52
< alias
MatrixWalker!(typeof(runner),typeof(funcyMatrix)).applyFunc apply;
---
alias
MatrixWalker!(typeof(&runner),typeof(funcyMatrix)).applyFunc
apply;