Some stupid tricks.

A bit of background on the stupid tricks

THis is where I put wierd ideas I have. Sort of like a scratch-pad.

A stupid functor trick

The functor trick was iunspired by Scott Meyers at the C++ Seminar. Basically, he wanted a way to get around this problem: Consider the code:

void foo(vector<int> v, list<int> w)
{
	transform( v.begin(), v.end(), w.begin(), v.begin(),multiplies);
}
Note the redundancy. So Scott came up with a functor NewMultiplies which behaves like multiplies<T> except for the special case of multiplies<void>, which creates member templates. So I thought, "why not make multiplies a template parameter, so we can do the same with plus, divides, etc and just plug in the functor to the template ?" And I ended up with my stupid functor trick.

The mixed argument deduction code is quite difficult to read. Basically, the promote template, the get_template_parameter, and get_result_type templates are all there to handle mixed arguments (and annoy the reader)

A Stupid Array Trick

Just a bizarre idea I had. Why not play around with templates to make multi-dimensional arrays ? Template abuse is fun, and this is a situation where it's useful, at least for people who actually like multidimensional arrays.