Bagaimana cara mengirimkan template sebagai parameter template ke template?

Saya mencoba menulis sesuatu seperti:

          // I don't know how this particular syntax should look...
template<typename template<typename Ty> FunctorT>
Something MergeSomething(const Something& lhs, const Something& rhs)
{
    Something result(lhs);
    if (lhs.IsUnsigned() && rhs.IsUnsigned())
    {
        result.SetUnsigned(FunctorT<unsigned __int64>()(lhs.UnsignedValue(), rhs.UnsignedValue()));
    }
    else
    {
        result.SetSigned(FunctorT<__int64>()(lhs.SignedValue(), rhs.SignedValue()));
    }
    return result;
}

yang akan digunakan seperti:

Something a, b;
Something c = MergeSomething<std::plus>(a, b);

Bagaimana cara melakukannya?

18
задан Billy ONeal 13 June 2011 в 19:14
поделиться