【发布时间】:2018-07-25 08:28:20
【问题描述】:
我需要编写一个模板化函数,它的行为取决于其参数的类:
template<class ContainerType>
bool myFunc(ContainerType in){
//do some stuff
}
template<class NotAContainerType>
bool myFunc(NotAContainerType in){
//do something else
}
我仅限于 C++11,所以 static_if 不在讨论范围内。此外,ContainerType 和 NotAContainerType 的类非常大,将来可能会发生变化,因此仅仅手动添加一些例外作为模板特化也是不明智的。
我知道std::enable_if 解决方法,但是如果我需要将它应用到两个相互不同的类集,我该如何使用它?
【问题讨论】:
-
您如何区分这些类型的课程?如果没有该代码,我们将无法为您提供太多帮助。
-
std::enable_if正是您要寻找的 - 所以只需定义如何区分“容器”类型与其他类型。 -
@Jaa-c,我将它们区分开来,正如它们的名字所暗示的那样: ContainerType 用于 std::containers (例如,它们有一个 iterator ),而 NotAConatinerType 用于其他任何东西
标签: c++ c++11 templates template-specialization enable-if