#pragma once

#include <__config>
#include <cstddef>
#include <iosfwd>

#include <__fwd/array.h>
#include <__fwd/deque.h>
#include <__fwd/pair.h>
#include <__fwd/string.h>
#include <__fwd/string_view.h>
#include <__fwd/tuple.h>
#include <__fwd/vector.h>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

_LIBCPP_BEGIN_NAMESPACE_STD

    template <class T, class A>
    class list;

    template <class T, class C, class A>
    class set;

    template <class T, class C, class A>
    class multiset;

    template <class K, class V, class C, class A>
    class map;

    template <class K, class V, class C, class A>
    class multimap;

    constexpr void get(...) = delete;

    template <class>
    class _LIBCPP_TEMPLATE_VIS function;

    template <class _Tp>
    struct _LIBCPP_TEMPLATE_VIS default_delete;

    template <class _Tp, class Deleter = default_delete<_Tp>>
    class _LIBCPP_TEMPLATE_VIS unique_ptr;

    template <class T>
    class _LIBCPP_TEMPLATE_VIS shared_ptr;

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM

    class path;

_LIBCPP_END_NAMESPACE_FILESYSTEM

