I\'m trying to write something like:
// I don\'t know how this particular syntax should look...
template Functo
This is just a "template template argument". The syntax is very close to what you imagined. Here it is:
template< template class FunctorT>
Something MergeSomething(const Something& lhs, const Something& rhs)
{
Something result(lhs);
if (lhs.IsUnsigned() && rhs.IsUnsigned())
{
result.SetUnsigned(FunctorT()(lhs.UnsignedValue(), rhs.UnsignedValue()));
}
else
{
result.SetSigned(FunctorT<__int64>()(lhs.SignedValue(), rhs.SignedValue()));
}
return result;
}
Your use-case should work like you posted it.