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/