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
23 RANGES_DIAGNOSTIC_PUSH
25 #ifdef RANGES_FEWER_WARNINGS
26 RANGES_DIAGNOSTIC_IGNORE_UNDEFINED_INTERNAL
27 RANGES_DIAGNOSTIC_IGNORE_INDENTATION
28 RANGES_DIAGNOSTIC_IGNORE_CXX17_COMPAT
31 RANGES_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)()