Horizon
Loading...
Searching...
No Matches
prologue.hpp
1// Range v3 library
2//
3// Copyright Eric Niebler 2013-present
4//
5// Use, modification and distribution is subject to the
6// Boost Software License, Version 1.0. (See accompanying
7// file LICENSE_1_0.txt or copy at
8// http://www.boost.org/LICENSE_1_0.txt)
9//
10// Project home: https://github.com/ericniebler/range-v3
11//
12
13#ifndef RANGES_V3_DETAIL_PROLOGUE_HPP
14#define RANGES_V3_DETAIL_PROLOGUE_HPP
15#include <range/v3/detail/config.hpp>
16#endif
17
18#ifdef RANGES_PROLOGUE_INCLUDED
19#error "Prologue already included!"
20#endif
21#define RANGES_PROLOGUE_INCLUDED
22
23RANGES_DIAGNOSTIC_PUSH
24
25#ifdef RANGES_FEWER_WARNINGS
26RANGES_DIAGNOSTIC_IGNORE_UNDEFINED_INTERNAL
27RANGES_DIAGNOSTIC_IGNORE_INDENTATION
28RANGES_DIAGNOSTIC_IGNORE_CXX17_COMPAT
29#endif
30
31RANGES_DIAGNOSTIC_KEYWORD_MACRO
32
33#define template(...) \
34 CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN \
35 template<__VA_ARGS__ CPP_TEMPLATE_AUX_ \
36
37#define AND CPP_and
38
40#if defined(__cpp_noexcept_function_type) && __cpp_noexcept_function_type >= 201510
41// noexcept is part of the type system
42#define declval(...) static_cast<__VA_ARGS__(*)() noexcept>(nullptr)()
43#else
44// noexcept is not part of the type system
45#define declval(...) static_cast<__VA_ARGS__(*)()>(nullptr)()
46#endif