13#ifndef RANGES_V3_DETAIL_PROLOGUE_HPP
14#define RANGES_V3_DETAIL_PROLOGUE_HPP
15#include <range/v3/detail/config.hpp>
18#ifdef RANGES_PROLOGUE_INCLUDED
19#error "Prologue already included!"
21#define RANGES_PROLOGUE_INCLUDED
25#ifdef RANGES_FEWER_WARNINGS
26RANGES_DIAGNOSTIC_IGNORE_UNDEFINED_INTERNAL
27RANGES_DIAGNOSTIC_IGNORE_INDENTATION
28RANGES_DIAGNOSTIC_IGNORE_CXX17_COMPAT
31RANGES_DIAGNOSTIC_KEYWORD_MACRO
33#define template(...) \
34 CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN \
35 template<__VA_ARGS__ CPP_TEMPLATE_AUX_ \
40#if defined(__cpp_noexcept_function_type) && __cpp_noexcept_function_type >= 201510
42#define declval(...) static_cast<__VA_ARGS__(*)() noexcept>(nullptr)()
45#define declval(...) static_cast<__VA_ARGS__(*)()>(nullptr)()