blob: a7bfd6530a8a0ef2b46220f9af1e4a669741f2e2 [file] [log] [blame]
Mark de Wevere983a652021-08-30 19:47:55 +02001// -*- C++ -*-
2//===----------------------------------------------------------------------===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H
11#define _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H
12
13#include <__config>
Nikolas Klausereb659122023-03-19 23:10:37 +010014#include <__system_error/errc.h>
Mark de Wevere983a652021-08-30 19:47:55 +020015
16#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
Arthur O'Dwyerfa6b9e42022-02-01 20:16:40 -050017# pragma GCC system_header
Mark de Wevere983a652021-08-30 19:47:55 +020018#endif
19
20_LIBCPP_BEGIN_NAMESPACE_STD
21
Nikolas Klauser4f152672023-02-14 00:56:09 +010022#if _LIBCPP_STD_VER >= 17
Mark de Wevere983a652021-08-30 19:47:55 +020023
Nikolas Klauserf1ea0b12023-06-14 10:17:50 -070024struct _LIBCPP_EXPORTED_FROM_ABI from_chars_result {
Mark de Wever866fbb82023-03-15 18:19:25 +010025 const char* ptr;
26 errc ec;
Nikolas Klauser4f152672023-02-14 00:56:09 +010027# if _LIBCPP_STD_VER >= 20
Mark de Wever866fbb82023-03-15 18:19:25 +010028 _LIBCPP_HIDE_FROM_ABI friend bool operator==(const from_chars_result&, const from_chars_result&) = default;
Mark de Wever3624c4d2021-10-23 18:28:31 +020029# endif
Mark de Wever92ac3602023-06-17 13:19:58 +020030# if _LIBCPP_STD_VER >= 26
31 _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return ec == errc{}; }
32# endif
Mark de Wevere983a652021-08-30 19:47:55 +020033};
34
Nikolas Klauser4f152672023-02-14 00:56:09 +010035#endif // _LIBCPP_STD_VER >= 17
Mark de Wevere983a652021-08-30 19:47:55 +020036
37_LIBCPP_END_NAMESPACE_STD
38
39#endif // _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H