================ @@ -0,0 +1,58 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20, c++23 + +// <fstream> + +// class basic_filebuf; + +// native_handle_type native_handle() const noexcept; + +#include <cassert> +#include <fstream> +#include <filesystem> +#include <utility> + +#include "platform_support.h" +#include "test_macros.h" +#include "../test_helpers.h" + +template <typename CharT> +void test() { + HandleT native_handle{}; + HandleT const_native_handle{}; + + { + std::basic_filebuf<CharT> f; + assert(!f.is_open()); + std::filesystem::path p = get_temp_file_name(); + f.open(p, std::ios_base::in); + assert(f.is_open()); + std::same_as<HandleT> decltype(auto) handle = f.native_handle(); + native_handle = handle; + assert(is_handle_valid(native_handle)); ---------------- mordante wrote:
```suggestion assert(is_handle_valid(handle)); f.close(); assert(!is_handle_valid(handle)); ``` This also allows to remove the `HandleT native_handle{};` above. This keeps the code more local. https://github.com/llvm/llvm-project/pull/76632 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits