File Coverage

/usr/local/lib/perl5/site_perl/5.26.1/XS/librangeV3.x/i/range/v3/range_fwd.hpp
Criterion Covered Total %
statement 4 4 100.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             /// \file
2             // Range v3 library
3             //
4             // Copyright Eric Niebler 2013-present
5             //
6             // Use, modification and distribution is subject to the
7             // Boost Software License, Version 1.0. (See accompanying
8             // file LICENSE_1_0.txt or copy at
9             // http://www.boost.org/LICENSE_1_0.txt)
10             //
11             // Project home: https://github.com/ericniebler/range-v3
12             //
13              
14             #ifndef RANGES_V3_RANGE_FWD_HPP
15             #define RANGES_V3_RANGE_FWD_HPP
16              
17             #include
18             #include
19             #include
20             #include
21             #include
22             #include
23              
24             /// \defgroup group-utility Utility
25             /// Utility classes
26              
27             /// \defgroup group-core Core
28             /// Core range functionality
29              
30             /// \defgroup group-algorithms Algorithms
31             /// Iterator- and range-based algorithms, like the standard algorithms
32              
33             /// \defgroup group-views Views
34             /// Lazy, non-owning, non-mutating, composable range views
35              
36             /// \defgroup group-actions Actions
37             /// Eager, mutating, composable algorithms
38              
39             /// \defgroup group-concepts Concepts
40             /// Concept-checking classes and utilities
41              
42             RANGES_DIAGNOSTIC_PUSH
43             RANGES_DIAGNOSTIC_IGNORE_CXX17_COMPAT
44              
45             namespace ranges
46             {
47             inline namespace v3
48             {
49             inline namespace CPOs {}
50              
51             /// \cond
52             namespace _end_
53             {
54             struct fn;
55             }
56             using end_fn = _end_::fn;
57              
58             namespace _size_
59             {
60             struct fn;
61             }
62             /// \endcond
63              
64             template
65             struct variant;
66              
67             template
68             struct dangling;
69              
70             template
71             struct common_type;
72              
73             template
74             using common_type_t = meta::_t>;
75              
76             template
77             struct basic_common_reference;
78              
79             template
80             struct common_reference;
81              
82             template
83             using common_reference_t = meta::_t>;
84              
85             template
86             struct result_of;
87              
88             template
89             using result_of_t = meta::_t>;
90              
91             struct make_pipeable_fn;
92              
93             template
94             struct pipeable;
95              
96             template
97             struct composed;
98              
99             template
100             struct overloaded;
101              
102             namespace action
103             {
104             template
105             struct action;
106             }
107              
108             namespace view
109             {
110             template
111             struct view;
112             }
113              
114             namespace adl_advance_detail
115             {
116             struct advance_fn;
117             }
118             using adl_advance_detail::advance_fn;
119              
120             struct advance_to_fn;
121              
122             struct advance_bounded_fn;
123              
124             struct next_fn;
125              
126             struct prev_fn;
127              
128             struct distance_fn;
129              
130             struct iter_size_fn;
131              
132             template
133             struct difference_type;
134              
135             template
136             struct value_type;
137              
138             template
139             struct iterator_category;
140              
141             template
142             struct size_type;
143              
144 957           struct view_base
145             {};
146              
147             /// \cond
148             namespace detail
149             {
150             template
151             struct any_
152             {
153             any_() = default;
154             any_(T &&)
155             {}
156             };
157              
158             template<>
159             struct any_
160             {
161             any_() = default;
162             template
163             any_(T &&)
164             {}
165             };
166              
167             using any = any_<>;
168              
169             struct value_init
170             {
171             template
172             operator T () const
173             {
174             return T{};
175             }
176             };
177              
178             struct make_compressed_pair_fn;
179              
180             template
181             constexpr T && forward(meta::_t> & t) noexcept
182             {
183             return static_cast(t);
184             }
185              
186             template
187             constexpr T && forward(meta::_t> && t) noexcept
188             {
189             // This is to catch way sketchy stuff like: forward(42)
190             static_assert(!std::is_lvalue_reference::value, "You didn't just do that!");
191             return static_cast(t);
192             }
193              
194             template
195             constexpr meta::_t> &&
196 2871           move(T && t) noexcept
197             {
198 2871           return static_cast> &&>(t);
199             }
200              
201             template
202             constexpr T const &as_const(T & t) noexcept
203             {
204             return t;
205             }
206             template
207             void as_const(T const &&) = delete;
208              
209             template
210             using decay_t = meta::_t>;
211              
212             template>>
213             using as_ref_t =
214             meta::_t>>>;
215              
216             template>>
217             using as_cref_t =
218             meta::_t>>>;
219              
220             struct get_first;
221             struct get_second;
222              
223             template
224             struct replacer_fn;
225              
226             template
227             struct replacer_if_fn;
228              
229             template
230             struct move_into_cursor;
231              
232             template
233             struct from_end_;
234              
235             template
236             constexpr int ignore_unused(Ts &&...)
237             {
238             return 42;
239             }
240              
241             template
242             struct priority_tag
243             : priority_tag
244             {};
245              
246             template<>
247             struct priority_tag<0>
248             {};
249              
250             #if defined(__clang__) && !defined(_LIBCPP_VERSION)
251             template
252             using is_trivially_constructible =
253             meta::bool_<__is_trivially_constructible(T, Args...)>;
254             template
255             using is_trivially_default_constructible =
256             is_trivially_constructible;
257             template
258             using is_trivially_copy_constructible =
259             is_trivially_constructible;
260             template
261             using is_trivially_move_constructible =
262             is_trivially_constructible;
263             template
264             using is_trivially_assignable =
265             meta::bool_<__is_trivially_assignable(T, U)>;
266             template
267             using is_trivially_copy_assignable =
268             is_trivially_assignable;
269             template
270             using is_trivially_move_assignable =
271             is_trivially_assignable;
272             template
273             using is_trivially_copyable =
274             meta::bool_<__is_trivially_copyable(T)>;
275             #elif defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 5
276             template
277             using is_trivially_default_constructible = std::is_trivial;
278             template
279             using is_trivially_copy_constructible = std::is_trivial;
280             template
281             using is_trivially_move_constructible = std::is_trivial;
282             template
283             using is_trivially_copy_assignable = std::is_trivial;
284             template
285             using is_trivially_move_assignable = std::is_trivial;
286             template
287             using is_trivially_copyable = std::is_trivial;
288             #else
289             template
290             using is_trivially_default_constructible =
291             std::is_trivially_constructible;
292             using std::is_trivially_copy_constructible;
293             using std::is_trivially_move_constructible;
294             using std::is_trivially_copy_assignable;
295             using std::is_trivially_move_assignable;
296             using std::is_trivially_copyable;
297             #endif
298              
299             #if RANGES_CXX_LIB_IS_FINAL > 0
300             # if defined(__clang__) && !defined(_LIBCPP_VERSION)
301             template
302             using is_final = meta::bool_<__is_final(T)>;
303             # else
304             using std::is_final;
305             # endif
306             #else
307             template
308             using is_final = std::false_type;
309             #endif
310              
311             // Work around libc++'s buggy std::is_function
312             // Function types here:
313             template
314             char (&is_function_impl_(priority_tag<0>))[1];
315              
316             // Array types here:
317             template
318             char (&is_function_impl_(priority_tag<1>))[2];
319              
320             // Anything that can be returned from a function here (including
321             // void and reference types):
322             template
323             char (&is_function_impl_(priority_tag<2>))[3];
324              
325             // Classes and unions (including abstract types) here:
326             template
327             char (&is_function_impl_(priority_tag<3>))[4];
328              
329             template
330             struct is_function
331             : meta::bool_(priority_tag<3>{})) == 1>
332             {};
333              
334             template
335             struct remove_rvalue_reference
336             {
337             using type = T;
338             };
339              
340             template
341             struct remove_rvalue_reference
342             {
343             using type = T;
344             };
345              
346             template
347             using remove_rvalue_reference_t = meta::_t>;
348              
349             // Workaround bug in the Standard Library:
350             // From cannot be an incomplete class type despite that
351             // is_convertible should be equivalent to is_convertible
352             // in such a case.
353             template
354             using is_convertible =
355             std::is_convertible>, To>;
356             }
357             /// \endcond
358              
359             namespace concepts
360             {
361             template
362             struct models;
363             }
364              
365             struct begin_tag {};
366             struct end_tag {};
367             struct copy_tag {};
368             struct move_tag {};
369              
370             template
371             using uncvref_t =
372             meta::_t>>>;
373              
374             struct not_equal_to;
375             struct equal_to;
376             struct less;
377             struct ordered_less;
378             struct ident;
379             template
380             struct logical_negate_;
381             template
382             using logical_negate = logical_negate_>;
383              
384             enum cardinality : std::ptrdiff_t
385             {
386             infinite = -3,
387             unknown = -2,
388             finite = -1
389             };
390              
391             template
392             struct range_cardinality;
393              
394             template
395             using is_finite = meta::bool_::value >= finite>;
396              
397             template
398             using is_infinite = meta::bool_::value == infinite>;
399              
400             template
401             struct enable_view;
402              
403             template
404             struct disable_sized_range;
405              
406             template
407             struct disable_sized_sentinel;
408              
409             template
410             struct basic_mixin;
411              
412             template
413             struct RANGES_EMPTY_BASES basic_iterator;
414              
415             template
416 1914           struct basic_view : view_base
417             {};
418              
419             template
420             struct view_facade;
421              
422             template
423             typename BaseRng,
424             cardinality C = range_cardinality::value>
425             struct view_adaptor;
426              
427             template
428             struct common_iterator;
429              
430             template
431             using common_iterator_t =
432             meta::if_, I, common_iterator>;
433              
434             template
435             struct compressed_pair;
436              
437             template
438             struct bind_element;
439              
440             template
441             using bind_element_t = meta::_t>;
442              
443             template
444             struct view_interface;
445              
446             template
447             struct istream_range;
448              
449             #if !RANGES_CXX_VARIABLE_TEMPLATES
450             template
451             istream_range istream(std::istream & sin);
452             #endif
453              
454             template
455             struct RANGES_EMPTY_BASES iterator_range;
456              
457             template
458             struct sized_iterator_range;
459              
460             template
461             struct reference_wrapper;
462              
463             template
464             struct is_reference_wrapper;
465              
466             // Views
467             //
468             template
469             struct RANGES_EMPTY_BASES adjacent_filter_view;
470              
471             namespace view
472             {
473             struct adjacent_filter_fn;
474             }
475              
476             template
477             struct RANGES_EMPTY_BASES adjacent_remove_if_view;
478              
479             namespace view
480             {
481             struct adjacent_remove_if_fn;
482             }
483              
484             namespace view
485             {
486             struct all_fn;
487             }
488              
489             template
490             struct const_view;
491              
492             namespace view
493             {
494             struct const_fn;
495             }
496              
497             template
498             struct counted_view;
499              
500             namespace view
501             {
502             struct counted_fn;
503             }
504              
505             struct default_sentinel { };
506              
507             template
508             struct move_iterator;
509              
510             template
511             using move_into_iterator =
512             basic_iterator>;
513              
514             template()>
515             struct RANGES_EMPTY_BASES cycled_view;
516              
517             namespace view
518             {
519             struct cycle_fn;
520             }
521              
522             /// \cond
523             namespace detail
524             {
525             template struct reverse_cursor;
526             }
527             /// \endcond
528              
529             template
530             using reverse_iterator = basic_iterator>;
531              
532             template
533             struct empty_view;
534              
535             namespace view
536             {
537             struct empty_fn;
538             }
539              
540             template
541             struct group_by_view;
542              
543             namespace view
544             {
545             struct group_by_fn;
546             }
547              
548             template
549             struct indirect_view;
550              
551             namespace view
552             {
553             struct indirect_fn;
554             }
555              
556             template
557             struct iota_view;
558              
559             template
560             struct closed_iota_view;
561              
562             namespace view
563             {
564             struct iota_fn;
565             struct closed_iota_fn;
566             }
567              
568             template
569             struct join_view;
570              
571             namespace view
572             {
573             struct join_fn;
574             }
575              
576             template
577             struct concat_view;
578              
579             namespace view
580             {
581             struct concat_fn;
582             }
583              
584             template
585             struct partial_sum_view;
586              
587             namespace view
588             {
589             struct partial_sum_fn;
590             }
591              
592             template
593             struct move_view;
594              
595             namespace view
596             {
597             struct move_fn;
598             }
599              
600             template
601             struct repeat_view;
602              
603             namespace view
604             {
605             struct repeat_fn;
606             }
607              
608             template
609             struct RANGES_EMPTY_BASES reverse_view;
610              
611             namespace view
612             {
613             struct reverse_fn;
614             }
615              
616             template
617             struct slice_view;
618              
619             namespace view
620             {
621             struct slice_fn;
622             }
623              
624             template
625             struct split_view;
626              
627             namespace view
628             {
629             struct split_fn;
630             }
631              
632             template
633             struct single_view;
634              
635             namespace view
636             {
637             struct single_fn;
638             }
639              
640             template
641             struct stride_view;
642              
643             namespace view
644             {
645             struct stride_fn;
646             }
647              
648             template
649             struct take_view;
650              
651             namespace view
652             {
653             struct take_fn;
654             }
655              
656             /// \cond
657             namespace detail
658             {
659             template
660             struct is_random_access_bounded_;
661              
662             template
663             bool IsRandomAccessBounded = is_random_access_bounded_::value>
664             struct take_exactly_view_;
665             }
666             /// \endcond
667              
668             template
669             using take_exactly_view = detail::take_exactly_view_;
670              
671             namespace view
672             {
673             struct take_exactly_fn;
674             }
675              
676             template
677             struct iter_take_while_view;
678              
679             template
680             struct take_while_view;
681              
682             namespace view
683             {
684             struct iter_take_while_fn;
685             struct take_while_fn;
686             }
687              
688             template
689             struct tokenize_view;
690              
691             namespace view
692             {
693             struct tokenize_fn;
694             }
695              
696             template
697             struct iter_transform_view;
698              
699             template
700             struct transform_view;
701              
702             namespace view
703             {
704             struct transform_fn;
705             }
706              
707             template
708             using replace_view = iter_transform_view>;
709              
710             template
711             using replace_if_view = iter_transform_view>;
712              
713             namespace view
714             {
715             struct replace_fn;
716              
717             struct replace_if_fn;
718             }
719              
720             template
721             struct unbounded_view;
722              
723             namespace view
724             {
725             struct unbounded_fn;
726             }
727              
728             template
729             using unique_view = adjacent_filter_view>;
730              
731             namespace view
732             {
733             struct unique_fn;
734             }
735              
736             template
737             using keys_range_view = transform_view;
738              
739             template
740             using values_view = transform_view;
741              
742             namespace view
743             {
744             struct keys_fn;
745              
746             struct values_fn;
747             }
748              
749             template
750             struct iter_zip_with_view;
751              
752             template
753             struct zip_with_view;
754              
755             template
756             struct zip_view;
757              
758             namespace view
759             {
760             struct iter_zip_with_fn;
761              
762             struct zip_with_fn;
763              
764             struct zip_fn;
765             }
766             }
767             }
768              
769             RANGES_DIAGNOSTIC_POP
770              
771             #endif