51 lines · c
1// -*- 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-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP___FORMAT_FORMAT_ERROR_H11#define _LIBCPP___FORMAT_FORMAT_ERROR_H12 13#include <__config>14#include <__verbose_abort>15#include <stdexcept>16 17#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)18# pragma GCC system_header19#endif20 21_LIBCPP_BEGIN_NAMESPACE_STD22 23#if _LIBCPP_STD_VER >= 2024 25_LIBCPP_DIAGNOSTIC_PUSH26_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables")27class _LIBCPP_EXPORTED_FROM_ABI format_error : public runtime_error {28public:29 _LIBCPP_HIDE_FROM_ABI explicit format_error(const string& __s) : runtime_error(__s) {}30 _LIBCPP_HIDE_FROM_ABI explicit format_error(const char* __s) : runtime_error(__s) {}31 _LIBCPP_HIDE_FROM_ABI format_error(const format_error&) = default;32 _LIBCPP_HIDE_FROM_ABI format_error& operator=(const format_error&) = default;33 _LIBCPP_HIDE_FROM_ABI_VIRTUAL34 ~format_error() noexcept override = default;35};36_LIBCPP_DIAGNOSTIC_POP37 38[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI void __throw_format_error(const char* __s) {39# if _LIBCPP_HAS_EXCEPTIONS40 throw format_error(__s);41# else42 _LIBCPP_VERBOSE_ABORT("format_error was thrown in -fno-exceptions mode with message \"%s\"", __s);43# endif44}45 46#endif // _LIBCPP_STD_VER >= 2047 48_LIBCPP_END_NAMESPACE_STD49 50#endif // _LIBCPP___FORMAT_FORMAT_ERROR_H51