/default_initializable "cpp/concepts/default initializable") , the default constructor   
constructs a wrapper which does not contain a value  |  the wrapper is also   
not [ ` default_initializable ` ](/w/cpp/concepts/default_initializable
"cpp/concepts/default initializable")  
[ LWG 3572 ](https://cplusplus.github.io/LWG/issue3572) |  C++20  |  conditionally different assignment operators were not constexpr  |  made constexpr   
  
###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/copyable_wrapper&action=edit&section=6
"Edit section: See also") ]  See also

[ ranges::single_view  views::single  ](/w/cpp/ranges/single_view "cpp/ranges/single view") (C++20)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") that contains a single element of a specified value   
(class template)  (customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_single_view&action=edit)  
---|---  
[ ranges::repeat_view  views::repeat  ](/w/cpp/ranges/repeat_view "cpp/ranges/repeat view") (C++23)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") consisting of a generated sequence by repeatedly producing the same value   
(class template)  (customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_repeat_view&action=edit)  
[ ranges::filter_view  views::filter  ](/w/cpp/ranges/filter_view "cpp/ranges/filter view") (C++20)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") that consists of the elements of a [ ` range ` ](/w/cpp/ranges/range "cpp/ranges/range") that satisfies a predicate   
(class template)  (range adaptor object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_filter_view&action=edit)  
[ ranges::transform_view  views::transform  ](/w/cpp/ranges/transform_view "cpp/ranges/transform view") (C++20)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") of a sequence that applies a transformation function to each element   
(class template)  (range adaptor object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_transform_view&action=edit)  
[ ranges::take_while_view  views::take_while  ](/w/cpp/ranges/take_while_view "cpp/ranges/take while view") (C++20)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") consisting of the initial elements of another [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") , until the first element on which a predicate returns  false    
(class template)  (range adaptor object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_take_while_view&action=edit)  
[ ranges::drop_while_view  views::drop_while  ](/w/cpp/ranges/drop_while_view "cpp/ranges/drop while view") (C++20)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") consisting of the elements of another [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") , skipping the initial subsequence of elements until the first element where the predicate returns  false    
(class template)  (range adaptor object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_drop_while_view&action=edit)  
[ ranges::zip_transform_view  views::zip_transform  ](/w/cpp/ranges/zip_transform_view "cpp/ranges/zip transform view") (C++23)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") consisting of tuples of results of application of a transformation function to corresponding elements of the adapted views   
(class template)  (customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/dsc_zip_transform_view&action=edit)  
[ ranges::adjacent_transform_view  views::adjacent_transform  ](/w/cpp/ranges/adjacent_transform_view "cpp/ranges/adjacent transform view") (C++23)  |  a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") consisting of tuples of results of application of a transformation function to adjacent elements of the adapted view   
(c