C++ 当我能';不使用模板?

C++ 当我能';不使用模板?,c++,c++11,templates,C++,C++11,Templates,当我不能将模板用于泛型函数或泛型类时,有人能给我解释一下吗 我知道在编译时需要模板,因此,存在无法使用模板的情况。但是我不清楚,我也找不到不能用模板实现的泛型代码示例(但可以用多态性实现)你不能在只需要一种类型的模板中使用,例如容器的内容。您可以做的是拥有一个非模板基和一个模板派生类。这就是所谓的类型擦除 一个很好的例子是std::function。存在来自许多不同可调用类型的转换构造函数,这些构造函数可以匹配签名Foo(Bar),但它们都会导致单个类型std::function,因此您可以拥有

当我不能将模板用于泛型函数或泛型类时,有人能给我解释一下吗


我知道在编译时需要模板,因此,存在无法使用模板的情况。但是我不清楚,我也找不到不能用模板实现的泛型代码示例(但可以用多态性实现)

你不能在只需要一种类型的模板中使用,例如容器的内容。您可以做的是拥有一个非模板基和一个模板派生类。这就是所谓的类型擦除

一个很好的例子是
std::function
。存在来自许多不同可调用类型的转换构造函数,这些构造函数可以匹配签名
Foo(Bar)
,但它们都会导致单个类型
std::function
,因此您可以拥有一个
std::vector

extern Foo free_函数(Bar);
extern Foo extra_args_函数(条形图、Baz);
向量foos
{
[](条b){return Foo();},
自由函数,
&酒吧:托福,
std::bind(额外的参数函数,std::占位符::_1,Baz())
};

此外,不能使模板成为虚拟方法

您需要发布非工作代码,以便我们可以帮助您。正如目前所问,您的问题不清楚,因为我们不知道您有什么问题。请阅读如何发布一篇文章。
extern Foo free_function(Bar);
extern Foo extra_args_function(Bar, Baz);

std::vector<std::function<Foo(Bar)>> foos
{
    [](Bar b) { return Foo(); },
    free_function,
    &Bar::to_Foo,
    std::bind(extra_args_function, std::placeholders::_1, Baz())
};