C++ 任何';设计模式';c++;启用_if和SFINAE?

C++ 任何';设计模式';c++;启用_if和SFINAE?,c++,metaprogramming,C++,Metaprogramming,我在互联网上做了不少搜索,在不同的上下文中找到了一些enable_if的例子 然而,我发现的几乎所有示例都是“虚拟”示例,可以通过继承和其他OO方法轻松完成 我想知道enable_if的实际应用是什么,它在OO中很难实现 或者换句话说,在什么样的应用程序中,enable_if最有用/最优雅 有人能举个例子吗 P>我可以理解C++的STD库使用了很多的EnabLeIIF,但是我没有编写STD库的意图。p> 我目前正在开发车队管理软件。我想知道在软件设计中是否有使用enable_if的“模式” 例

我在互联网上做了不少搜索,在不同的上下文中找到了一些enable_if的例子

然而,我发现的几乎所有示例都是“虚拟”示例,可以通过继承和其他OO方法轻松完成

我想知道enable_if的实际应用是什么,它在OO中很难实现

或者换句话说,在什么样的应用程序中,enable_if最有用/最优雅

有人能举个例子吗

<> P>我可以理解C++的STD库使用了很多的EnabLeIIF,但是我没有编写STD库的意图。p> 我目前正在开发车队管理软件。我想知道在软件设计中是否有使用enable_if的“模式”

例如,启用_if可用于“区分”返回类型:

template<typename T>
std::enable_if_t<std::is_integral<T>::value> f(T t){
    //integral version
}

template<typename T>
std::enable_if_t<std::is_floating_point<T>::value> f(T t){
    //floating point version
}
模板
std::启用_if_t f(t t){
//整型
}
模板
std::启用_if_t f(t t){
//浮点版本
}

非常感谢

我想到了。你的问题太广泛了,看看标准库,就像它在“现实世界”中所使用的。你可以在C++标准库和许多Boost库中找到真实的例子。谢谢你的评论。除了编写自己的库之外,还有其他应该使用enable_if的场景吗?您可能会从中获得一些信息。在我看来,元编程喜欢为C++创建(类型安全)MODS,如果出现在库/模板代码中。在简单的应用程序代码中,您通常知道是否需要函数。我想到了。你的问题太广泛了,看看标准库,就像它在“现实世界”中所使用的。你可以在C++标准库和许多Boost库中找到真实的例子。谢谢你的评论。除了编写自己的库之外,还有其他应该使用enable_if的场景吗?您可能会从中获得一些信息。在我看来,元编程喜欢为C++创建(类型安全)MODS,如果出现在库/模板代码中。在简单的应用程序代码中,您通常知道是否需要函数。