C++模板在模板类中传递,并在以后指定模板类型

C++模板在模板类中传递,并在以后指定模板类型,c++,templates,C++,Templates,我想做如下的事情 #include <iostream> #include <functional> using namespace std; bool b1, b2; int i1, i2; template<typename COMP> bool my_comp(COMP comp) { return comp<bool>(b1, b2) && comp<int>(i1, i2); } int main

我想做如下的事情

#include <iostream>
#include <functional>
using namespace std;

bool b1, b2;
int i1, i2;

template<typename COMP>
bool my_comp(COMP comp)
{
    return comp<bool>(b1, b2) && comp<int>(i1, i2);
}

int main() 
{
    my_comp(std::equal_to);
    return 0;
}
与中一样,我希望将模板类传递给模板,并在事实之后指定templated classes模板参数


我可以这样做吗?

是的,可以使用稍微不同的语法,使用模板参数:

#include <iostream>
#include <functional>
using namespace std;

bool b1, b2;
int i1, i2;

template<template <class T> class COMP>
bool my_comp()
{
    return COMP<bool>{}(b1, b2) && COMP<int>{}(i1, i2);
}

int main()
{
    my_comp<std::equal_to>();
    return 0;
}

是的,这可以通过使用模板参数使用稍微不同的语法实现:

#include <iostream>
#include <functional>
using namespace std;

bool b1, b2;
int i1, i2;

template<template <class T> class COMP>
bool my_comp()
{
    return COMP<bool>{}(b1, b2) && COMP<int>{}(i1, i2);
}

int main()
{
    my_comp<std::equal_to>();
    return 0;
}