function-templates相关内容

具有显式模板参数列表和[temp.arg.explicit]/3的函数调用的推导失败

[temp.arg.explicit]/3 (最终草案)介绍了如何使用明确指定的模板参数列表来推导功能模板参数: 在推论完成且失败的情况下,或[...]如果指定了模板参数列表,并且其与任何默认模板参数一起标识单个函数模板特化,则template-id为功能模板专业化的左值. 这如何适用于参数包? 考虑 template struct S { ..
发布时间:2020-06-15 19:26:23 C/C++开发

C ++中的部分模板函数规范有效,但是为什么呢?

我试图找出模板函数的部分规范是否是C ++标准的一部分,或者这是否是特定于编译器的. 通过局部规范,我的意思是仅指定编译器无法推断的类型.因此,如果我有一个采用3种类型的模板函数"f",并且其中一种在参数中使用并且可以推导,则我可以用f(parameter) 的形式调用"f" 这是一个例子: #include #include ..

在C ++ 20中将不再允许在std中针对程序定义类型的功能模板进行专业化处理吗?

从 cppreference.com 引用: 添加模板专业化 仅当声明依赖于至少一个程序定义的类型并且该专业满足原始模板的所有要求,除非禁止此类专业. 这是否意味着,从C ++ 20开始,将不再允许将功能模板的特殊化添加到用户定义类型的std名称空间中?如果是这样,则意味着许多现有代码可能会中断,不是吗? (在我看来,这是一种“激进的"改变.)此外,它将在代码中注入未定义的行为, ..
发布时间:2020-06-15 19:25:50 C/C++开发

类成员函数模板可以是虚拟的吗?

我听说C ++类成员函数模板不能是虚拟的。这是真的? 如果它们可以是虚拟的,那么使用这种功能的情况的例子是什么? 解决方案 模板都是有关编译器在 compile-time 时生成代码的。虚拟函数都是关于运行时系统的,用于确定在运行时中调用哪个函数。 一旦运行时系统发现需要调用模板化的虚拟函数,编译就完成了,并且编译器无法再生成适当的实例了。因此,您不能具有虚拟成员功能模板。 ..

模板函数..错误:模板标识不匹配任何模板声明

我已经写了函数模板和明确专用的模板函数,它只需要3个参数并计算其中最大的值并打印出来。 b $ b 专门的函数会导致错误,而模板工作正常。 但我想使用 char * type 。 这是我得到的错误=> error:template-id'Max'> for'void Max(char,char,char)'不匹配任何模板声明 以下是我的代码: template ..
发布时间:2018-04-21 19:50:16 C/C++开发

功能模板:具有类型traits的不同专业化

考虑类模板,可以使用类型traits和dummy启用程序模板参数为某些类型的组提供模板特化。我已经早些时候询问。 现在,对于函数模板,我需要相同的东西:我有一个模板函数,想要一组类型的特殊化,例如,所有类型是一个类的子类型 X 。我可以用类型traits来表达这样的: std :: enable_if :: type ..
发布时间:2016-10-28 01:20:08 C/C++开发