Re: Passing functions as template parameter and assigning default values to them
On Sunday, 21 June 2015 at 10:06:15 UTC, biozic wrote: You can use a template alias parameter with a default value that is your default lambda: int indexOfMax(alias fun = a => a, R)(R range) { // Use `fun` here like a function. } -- Nico Thanks a lot, it works !!
Re: Passing functions as template parameter and assigning default values to them
On Sunday, 21 June 2015 at 09:34:51 UTC, kerdemdemir wrote: Hi, I need to find the index of maximum element so my code: int indexOfMax(R)(R range) { alias Type = typeof(range.front().re); > I don't like .re here Type max = 0; size_t maxIndex = 0; foreach ( index,elem; range ) { if ( elem.re > max )-> And also here { max = elem.re; maxIndex = index; } } return maxIndex; } Since my range contains Complex!double types I have to add ".re" for current implementation. But I want to be more generic. Like how std.algorithm.map is. Like: range.map!(a => a.re). So what I want to achive is : indexOfMax!(a => a.re)(complexRange); > implement algorithm on a.re indexOfMax(intRange); -> if a function is not given act like (a => a) Any advice with template function parameters or mixins will make me happy. Regards Erdem You can use a template alias parameter with a default value that is your default lambda: int indexOfMax(alias fun = a => a, R)(R range) { // Use `fun` here like a function. } -- Nico
Passing functions as template parameter and assigning default values to them
Hi, I need to find the index of maximum element so my code: int indexOfMax(R)(R range) { alias Type = typeof(range.front().re); > I don't like .re here Type max = 0; size_t maxIndex = 0; foreach ( index,elem; range ) { if ( elem.re > max )-> And also here { max = elem.re; maxIndex = index; } } return maxIndex; } Since my range contains Complex!double types I have to add ".re" for current implementation. But I want to be more generic. Like how std.algorithm.map is. Like: range.map!(a => a.re). So what I want to achive is : indexOfMax!(a => a.re)(complexRange); > implement algorithm on a.re indexOfMax(intRange); -> if a function is not given act like (a => a) Any advice with template function parameters or mixins will make me happy. Regards Erdem