<ranges> ](/w/cpp/header/ranges "cpp/header/ranges") ` |  |   
---|---|---  
template  < [ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view)
V  >  
class  drop_view  
:  public  [ ranges::  view_interface  ](http://en.cppreference.com/w/cpp/ranges/view_interface) < drop_view  < V  >> |  (1)  |  (since C++20)   
namespace  views  {  
inline  constexpr  /* unspecified */  drop  =  /* unspecified */  ;  
}  |  (2)  |  (since C++20)   
Call signature  |  |   
template  < [ ranges::  viewable_range
](http://en.cppreference.com/w/cpp/ranges/viewable_range) R  >  
requires  /* see below */  
constexpr  [ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view)
auto  
drop  (  R  && r, [ ranges::  range_difference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < R  > count  )  ;  |  |  (since C++20)   
template  < class  DifferenceType  >  
constexpr  /* range adaptor closure */  drop  (  DifferenceType  && count  )  ;  |  |  (since C++20)   
|  |   
  
1)  A range adaptor consisting of elements of the underlying sequence,
skipping the first _N_ elements.

2)  [ RangeAdaptorObject  ](/w/cpp/named_req/RangeAdaptorObject "cpp/named
req/RangeAdaptorObject") . Given ` T ` is  [ std::  remove_cvref_t
](http://en.cppreference.com/w/cpp/types/remove_cvref) < decltype  (  (  e  )
)  > and ` D ` is  [ ranges::  range_difference_t
](http://en.cppreference.com/w/cpp/ranges/iterator_t) < decltype  (  (  e  )
)  > ), the expression  views  ::  drop  (  e, f  )  is [ expression-
equivalent ](/w/cpp/language/expressions#Expression-equivalence
"cpp/language/expressions") to:

  * (  (  void  )  f,  ` ` [ ` _decay-copy_ ` ](/w/cpp/standard_library/decay-copy "cpp/standard library/decay-copy") (  e  )  )  , if ` T ` is a [ ` ranges::empty_view ` ](/w/cpp/ranges/empty_view "cpp/ranges/empty view") , except that the evaluations of  e  and  f  are indeterminately sequenced; 
  * otherwise,  T  (  [ ranges::  begin  ](http://en.cppreference.com/w/cpp/ranges-ranges-placeholder/begin) (  e  )  \+  inc, [ ranges::  end  ](http://en.cppreference.com/w/cpp/ranges-ranges-placeholder/end) (  e  )  ,    
/* to-unsigned-like */  (  [ ranges::  distance
](http://en.cppreference.com/w/cpp/iterator/ranges/distance) (  e  )  \-  inc
)  )  , if ` T ` is a specialization of  [ ranges::  subrange
](http://en.cppreference.com/w/cpp/ranges/subrange) that models both [ `
random_access_range ` ](/w/cpp/ranges/random_access_range "cpp/ranges/random
access range") and [ ` sized_range ` ](/w/cpp/ranges/sized_range
"cpp/ranges/sized range") , and ` T ` needs to store the size (see [ `
ranges::subrange::subrange ` ](/w/cpp/ranges/subrange/subrange
"cpp/ranges/subrange/subrange") for details), where  inc  is  [ std::  min
](http://en.cppreference.com/w/cpp/algorithm/min) < D  > (  [ ranges::
distance  ](http://en.cppreference.com/w/cpp/iterator/ranges/distance) (  e  )
, f  )  ;

  * otherwise,  U  (  [ ranges::  begin  ](http://en.cppreference.com/w/cpp/ranges-ranges-placeholder/begin) (  e  )  \+  inc, [ ranges::  end  ](http://en.cppreference.com/w/cpp/ranges-ranges-placeholder/end) (  e  )  )  , if ` T ` is a specialization of  [ std::  span  ](http://en.cppreference.com/w/cpp/container/span) ,  [ std::basic_string_view ](/w/cpp/string/basic_string_view "cpp/string/basic string view") ,  [ ranges::  iota_view  ](http://en.cppreference.com/w/cpp/ranges/iota_view) , or  [ ranges::  subrange  ](http://en.cppreference.com/w/cpp/ranges/subrange) that models both [ ` random_access_range ` ](/w/cpp/ranges/random_access_range "cpp/ranges/random access range") and [ ` sized_range ` ](/w/cpp/ranges/sized_range "cpp/ranges/sized range") , where ` U ` is 

    

  * [ std::  span  ](http://en.cppreference.com/w/cpp/container/span) < typename  T  ::  element_type  > , if ` T ` is a specialization of  [ std::  span  ](http://en.cppreference.com/w/cpp/container/span) ; 
  * ` T ` otherwise; 

  * otherwise, if ` T ` is a specialization of [ ` ranges::repeat_view