gpt4 book ai didi

c++ - enable_if 只有 C++11 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:00 29 4
gpt4 key购买 nike

在 C++ 引用网站上查找 enable_if,据说它只是 C++11 的一个特性。

但是,我在 C++98 类型上使用 GCC 编译器编译了我自己的 enable_if 版本,它运行良好并且似乎能够用于任何版本的 C++(打印 1):

#include <iostream>

namespace egg
{
template<bool B,
typename T = void>
struct enable_if
{
};

template<typename T>
struct enable_if<true, T>
{
typedef T type;
};
}

int main()
{
egg::enable_if<1 == 1, int>::type x = 1;
std::cout << x << std::endl;
}

我说的 enable_if 是任何 C++ 版本的一个有效功能,但只是引入到 C++ 标准中,或者还有其他原因吗?

最佳答案

enable_if 已添加到 C++11 中的标准 ( source )。它不依赖于任何 C++11 标准功能,因此您可以在 C++03 中自己编写代码,正如您从这个可能的实现中看到的那样

template<bool B, class T = void>
struct enable_if {};

template<class T>
struct enable_if<true, T> { typedef T type; };

这只是使用 template metaprogramingSFINAE .

你也可以使用 boost::enable_if而不是自己编写也兼容 C++98/03 的代码。

关于c++ - enable_if 只有 C++11 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637953/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com