c++ - 为什么 `std::unary_function` 仍然在 c++17 中编译?

标签 c++ g++ c++17

std::unary_function特性在 c++11 中被弃用并在 c++17 中被删除。但是使用 c++17 编译器标志,这段代码仍然可以编译:

struct less_than_7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};

内置g++ -std=c++17 -O0 -Wall -pedantic main.cpp here.

功能删除对于编译器来说是可选的吗?

最佳答案

由于它不再是 C++17 标准的一部分,因此将其包含在您的一个源代码文件中与将内容引入 std 的代码属于同一类别。

换句话说,程序行为未定义

程序运行是这种未定义行为的表现。也许您的实现定义了未定义的行为。但即便如此,您的代码也不是可移植的 C++17。

关于c++ - 为什么 `std::unary_function` 仍然在 c++17 中编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51720617/

相关文章:

c++ - 使用成员初始值设定项时 gcc 中可能存在的错误

c++ - 为什么 NDK 编译器无法识别 LOCAL_CFLAGS 定义?

opencv - 安卓 : linking to opencv results in SIGBUS (signal SIGBUS: illegal alignment) when exception is thrown

c++ - 使用 constexpr 初始化 std.array 中的对象

c++ - 不用递归实现 Minimax

c++ - 为什么引用传递涉及复制构造函数?

c++ - openmpi mpmd 获取通信大小

c++ - GCC 4.8.2 中缺少 OpenMP 4 功能

c++ - 如何编写循环声明 C++14

c++ - 静态对象初始值设定项 C++