不能在使用 make 和 g++ 构建的代码中使用 std::filesystem

Can't use std::filesystem in code built with make and g++

我在使用 make 构建我的 C++ 应用程序时遇到了一些问题。 我有这样的 C++ 代码:

#include <string>
#include <iostream>
#include <filesystem>

using namespace std;

namespace fs = std::filesystem;

int main()
{
    auto iter = fs::directory_iterator(fs::current_path());
    while(iter._At_end())
    {
        cout << iter->path() << endl;
    }
    return 0;
}

我正在尝试使用以下命令编译目标文件: g++-9 -std=c++17 -Wall -Wextra -pthread -lstdc++fs -c -o main.o main.cpp 但是我有这个错误:

main.cpp:12:16: error: ‘class std::filesystem::__cxx11::directory_iterator’ has no member named ‘_At_end’
   12 |     while(iter._At_end())
      |                ^~~~~~~

所以,我不能使用 std::filesystem 命名空间的 classes 的成员,但是如果我只想使用 class(例如 std::filesystem::path),那么一切正常

软件版本:

g++-9 (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
GNU Make 4.2.1

希望你能帮助我。

别用_At_end()就没事了。