Skip to content

Commit e51842d

Browse files
committed
P2711R1 Making multi-param constructors of views explicit
1 parent 9ce105b commit e51842d

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

source/ranges.tex

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2655,8 +2655,8 @@
26552655
public:
26562656
iota_view() requires @\libconcept{default_initializable}@<W> = default;
26572657
constexpr explicit iota_view(W value);
2658-
constexpr iota_view(type_identity_t<W> value, type_identity_t<Bound> bound);
2659-
constexpr iota_view(@\exposid{iterator}@ first, @\seebelow@ last);
2658+
constexpr explicit iota_view(type_identity_t<W> value, type_identity_t<Bound> bound);
2659+
constexpr explicit iota_view(@\exposid{iterator}@ first, @\seebelow@ last);
26602660

26612661
constexpr @\exposid{iterator}@ begin() const;
26622662
constexpr auto end() const;
@@ -2789,7 +2789,7 @@
27892789

27902790
\indexlibraryctor{iota_view}%
27912791
\begin{itemdecl}
2792-
constexpr iota_view(type_identity_t<W> value, type_identity_t<Bound> bound);
2792+
constexpr explicit iota_view(type_identity_t<W> value, type_identity_t<Bound> bound);
27932793
\end{itemdecl}
27942794

27952795
\begin{itemdescr}
@@ -2808,7 +2808,7 @@
28082808

28092809
\indexlibraryctor{iota_view}%
28102810
\begin{itemdecl}
2811-
constexpr iota_view(@\exposid{iterator}@ first, @\seebelow@ last);
2811+
constexpr explicit iota_view(@\exposid{iterator}@ first, @\seebelow@ last);
28122812
\end{itemdecl}
28132813

28142814
\begin{itemdescr}
@@ -4549,7 +4549,7 @@
45494549

45504550
public:
45514551
filter_view() requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pred> = default;
4552-
constexpr filter_view(V base, Pred pred);
4552+
constexpr explicit filter_view(V base, Pred pred);
45534553

45544554
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
45554555
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -4572,7 +4572,7 @@
45724572

45734573
\indexlibraryctor{filter_view}%
45744574
\begin{itemdecl}
4575-
constexpr filter_view(V base, Pred pred);
4575+
constexpr explicit filter_view(V base, Pred pred);
45764576
\end{itemdecl}
45774577

45784578
\begin{itemdescr}
@@ -4976,7 +4976,7 @@
49764976

49774977
public:
49784978
transform_view() requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<F> = default;
4979-
constexpr transform_view(V base, F fun);
4979+
constexpr explicit transform_view(V base, F fun);
49804980

49814981
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
49824982
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -5007,7 +5007,7 @@
50075007

50085008
\indexlibraryctor{transform_view}%
50095009
\begin{itemdecl}
5010-
constexpr transform_view(V base, F fun);
5010+
constexpr explicit transform_view(V base, F fun);
50115011
\end{itemdecl}
50125012

50135013
\begin{itemdescr}
@@ -5714,7 +5714,7 @@
57145714

57155715
public:
57165716
take_view() requires @\libconcept{default_initializable}@<V> = default;
5717-
constexpr take_view(V base, range_difference_t<V> count);
5717+
constexpr explicit take_view(V base, range_difference_t<V> count);
57185718

57195719
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
57205720
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -5798,7 +5798,7 @@
57985798

57995799
\indexlibraryctor{take_view}%
58005800
\begin{itemdecl}
5801-
constexpr take_view(V base, range_difference_t<V> count);
5801+
constexpr explicit take_view(V base, range_difference_t<V> count);
58025802
\end{itemdecl}
58035803

58045804
\begin{itemdescr}
@@ -5945,7 +5945,7 @@
59455945

59465946
public:
59475947
take_while_view() requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pred> = default;
5948-
constexpr take_while_view(V base, Pred pred);
5948+
constexpr explicit take_while_view(V base, Pred pred);
59495949

59505950
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
59515951
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -5976,7 +5976,7 @@
59765976

59775977
\indexlibraryctor{take_while_view}%
59785978
\begin{itemdecl}
5979-
constexpr take_while_view(V base, Pred pred);
5979+
constexpr explicit take_while_view(V base, Pred pred);
59805980
\end{itemdecl}
59815981

59825982
\begin{itemdescr}
@@ -6169,7 +6169,7 @@
61696169
class drop_view : public view_interface<drop_view<V>> {
61706170
public:
61716171
drop_view() requires @\libconcept{default_initializable}@<V> = default;
6172-
constexpr drop_view(V base, range_difference_t<V> count);
6172+
constexpr explicit drop_view(V base, range_difference_t<V> count);
61736173

61746174
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
61756175
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -6210,7 +6210,7 @@
62106210

62116211
\indexlibraryctor{drop_view}%
62126212
\begin{itemdecl}
6213-
constexpr drop_view(V base, range_difference_t<V> count);
6213+
constexpr explicit drop_view(V base, range_difference_t<V> count);
62146214
\end{itemdecl}
62156215

62166216
\begin{itemdescr}
@@ -6294,7 +6294,7 @@
62946294
class drop_while_view : public view_interface<drop_while_view<V, Pred>> {
62956295
public:
62966296
drop_while_view() requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pred> = default;
6297-
constexpr drop_while_view(V base, Pred pred);
6297+
constexpr explicit drop_while_view(V base, Pred pred);
62986298

62996299
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
63006300
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -6317,7 +6317,7 @@
63176317

63186318
\indexlibraryctor{drop_while_view}%
63196319
\begin{itemdecl}
6320-
constexpr drop_while_view(V base, Pred pred);
6320+
constexpr explicit drop_while_view(V base, Pred pred);
63216321
\end{itemdecl}
63226322

63236323
\begin{itemdescr}
@@ -6917,12 +6917,12 @@
69176917
join_with_view()
69186918
requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pattern> = default;
69196919

6920-
constexpr join_with_view(V base, Pattern pattern);
6920+
constexpr explicit join_with_view(V base, Pattern pattern);
69216921

69226922
template<@\libconcept{input_range}@ R>
69236923
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
69246924
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<@\exposid{InnerRng}@>>>
6925-
constexpr join_with_view(R&& r, range_value_t<@\exposid{InnerRng}@> e);
6925+
constexpr explicit join_with_view(R&& r, range_value_t<@\exposid{InnerRng}@> e);
69266926

69276927
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
69286928
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -6969,7 +6969,7 @@
69696969
\end{codeblock}
69706970

69716971
\begin{itemdecl}
6972-
constexpr join_with_view(V base, Pattern pattern);
6972+
constexpr explicit join_with_view(V base, Pattern pattern);
69736973
\end{itemdecl}
69746974

69756975
\begin{itemdescr}
@@ -6983,7 +6983,7 @@
69836983
template<@\libconcept{input_range}@ R>
69846984
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
69856985
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<@\exposid{InnerRng}@>>>
6986-
constexpr join_with_view(R&& r, range_value_t<@\exposid{InnerRng}@> e);
6986+
constexpr explicit join_with_view(R&& r, range_value_t<@\exposid{InnerRng}@> e);
69876987
\end{itemdecl}
69886988

69896989
\begin{itemdescr}
@@ -7502,12 +7502,12 @@
75027502
public:
75037503
lazy_split_view()
75047504
requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pattern> = default;
7505-
constexpr lazy_split_view(V base, Pattern pattern);
7505+
constexpr explicit lazy_split_view(V base, Pattern pattern);
75067506

75077507
template<@\libconcept{input_range}@ R>
75087508
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
75097509
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<R>>>
7510-
constexpr lazy_split_view(R&& r, range_value_t<R> e);
7510+
constexpr explicit lazy_split_view(R&& r, range_value_t<R> e);
75117511

75127512
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
75137513
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -7550,7 +7550,7 @@
75507550

75517551
\indexlibraryctor{lazy_split_view}%
75527552
\begin{itemdecl}
7553-
constexpr lazy_split_view(V base, Pattern pattern);
7553+
constexpr explicit lazy_split_view(V base, Pattern pattern);
75547554
\end{itemdecl}
75557555

75567556
\begin{itemdescr}
@@ -7565,7 +7565,7 @@
75657565
template<@\libconcept{input_range}@ R>
75667566
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
75677567
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<R>>>
7568-
constexpr lazy_split_view(R&& r, range_value_t<R> e);
7568+
constexpr explicit lazy_split_view(R&& r, range_value_t<R> e);
75697569
\end{itemdecl}
75707570

75717571
\begin{itemdescr}
@@ -8046,12 +8046,12 @@
80468046
public:
80478047
split_view()
80488048
requires @\libconcept{default_initializable}@<V> && @\libconcept{default_initializable}@<Pattern> = default;
8049-
constexpr split_view(V base, Pattern pattern);
8049+
constexpr explicit split_view(V base, Pattern pattern);
80508050

80518051
template<@\libconcept{forward_range}@ R>
80528052
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
80538053
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<R>>>
8054-
constexpr split_view(R&& r, range_value_t<R> e);
8054+
constexpr explicit split_view(R&& r, range_value_t<R> e);
80558055

80568056
constexpr V base() const & requires @\libconcept{copy_constructible}@<V> { return @\exposid{base_}@; }
80578057
constexpr V base() && { return std::move(@\exposid{base_}@); }
@@ -8079,7 +8079,7 @@
80798079
\end{codeblock}
80808080

80818081
\begin{itemdecl}
8082-
constexpr split_view(V base, Pattern pattern);
8082+
constexpr explicit split_view(V base, Pattern pattern);
80838083
\end{itemdecl}
80848084

80858085
\begin{itemdescr}
@@ -8094,7 +8094,7 @@
80948094
template<@\libconcept{forward_range}@ R>
80958095
requires @\libconcept{constructible_from}@<V, views::all_t<R>> &&
80968096
@\libconcept{constructible_from}@<Pattern, single_view<range_value_t<R>>>
8097-
constexpr split_view(R&& r, range_value_t<R> e);
8097+
constexpr explicit split_view(R&& r, range_value_t<R> e);
80988098
\end{itemdecl}
80998099

81008100
\begin{itemdescr}

0 commit comments

Comments
 (0)