proxygen
folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false > Class Template Reference

#include <Iterator.h>

Inheritance diagram for folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >:
folly::detail::emplace_iterator_base< Derived, EmplaceImpl, true >

Public Types

using iterator_category = std::output_iterator_tag
 
using value_type = void
 
using difference_type = void
 
using pointer = void
 
using reference = void
 
using container_type = std::remove_reference_t< decltype(*EmplaceImpl::container)>
 

Public Member Functions

template<typename T >
Derivedoperator= (T &&arg)
 
template<typename... Args>
Derivedoperator= (emplace_args< Args... > &args)
 
template<typename... Args>
Derivedoperator= (const emplace_args< Args... > &args)
 
template<typename... Args>
Derivedoperator= (emplace_args< Args... > &&args)
 
Derivedoperator* ()
 
Derivedoperator++ ()
 
Derivedoperator++ (int)
 
 emplace_iterator_base (const emplace_iterator_base &)=default
 
 emplace_iterator_base (emplace_iterator_base &&) noexcept=default
 
emplace_iterator_baseoperator= (emplace_iterator_base &)=default
 
emplace_iterator_baseoperator= (const emplace_iterator_base &)=default
 
emplace_iterator_baseoperator= (emplace_iterator_base &&) noexcept=default
 

Protected Member Functions

template<typename Args , std::size_t... I>
DerivedunpackAndEmplace (Args &args, index_sequence< I... >)
 
template<typename Args , std::size_t... I>
DerivedunpackAndEmplace (const Args &args, index_sequence< I... >)
 
template<typename Args , std::size_t... I>
DerivedunpackAndEmplace (Args &&args, index_sequence< I... >)
 

Detailed Description

template<typename Derived, typename EmplaceImpl>
class folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >

Partial specialization of emplace_iterator_base with implicit unpacking disabled.

Definition at line 225 of file Iterator.h.

Member Typedef Documentation

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::container_type = std::remove_reference_t<decltype(*EmplaceImpl::container)>

Definition at line 235 of file Iterator.h.

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::difference_type = void

Definition at line 231 of file Iterator.h.

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::iterator_category = std::output_iterator_tag

Definition at line 229 of file Iterator.h.

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::pointer = void

Definition at line 232 of file Iterator.h.

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::reference = void

Definition at line 233 of file Iterator.h.

template<typename Derived , typename EmplaceImpl >
using folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::value_type = void

Definition at line 230 of file Iterator.h.

Constructor & Destructor Documentation

template<typename Derived , typename EmplaceImpl >
folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::emplace_iterator_base ( const emplace_iterator_base< Derived, EmplaceImpl, false > &  )
default
template<typename Derived , typename EmplaceImpl >
folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::emplace_iterator_base ( emplace_iterator_base< Derived, EmplaceImpl, false > &&  )
defaultnoexcept

Member Function Documentation

template<typename Derived , typename EmplaceImpl >
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator* ( )
inline

Definition at line 267 of file Iterator.h.

267  {
268  return static_cast<Derived&>(*this);
269  }
template<typename Derived , typename EmplaceImpl >
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator++ ( )
inline

Definition at line 270 of file Iterator.h.

270  {
271  return static_cast<Derived&>(*this);
272  }
template<typename Derived , typename EmplaceImpl >
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator++ ( int  )
inline

Definition at line 273 of file Iterator.h.

References testing::Args(), and folly::pushmi::__adl::noexcept().

273  {
274  return static_cast<Derived&>(*this);
275  }
template<typename Derived , typename EmplaceImpl >
template<typename T >
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( T &&  arg)
inline

Canonical output operator. Forwards single argument straight to container's emplace function.

Definition at line 244 of file Iterator.h.

References testing::Args().

244  {
245  this->emplace(std::forward<T>(arg));
246  return static_cast<Derived&>(*this);
247  }
template<typename Derived , typename EmplaceImpl >
template<typename... Args>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( emplace_args< Args... > &  args)
inline

Special output operator for packed arguments. Unpacks args and performs variadic call to container's emplace function.

Definition at line 254 of file Iterator.h.

References testing::Args().

254  {
255  return unpackAndEmplace(args, index_sequence_for<Args...>{});
256  }
Derived & unpackAndEmplace(Args &args, index_sequence< I... >)
Definition: Iterator.h:287
template<typename Derived , typename EmplaceImpl >
template<typename... Args>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( const emplace_args< Args... > &  args)
inline

Definition at line 258 of file Iterator.h.

References testing::Args().

258  {
259  return unpackAndEmplace(args, index_sequence_for<Args...>{});
260  }
Derived & unpackAndEmplace(Args &args, index_sequence< I... >)
Definition: Iterator.h:287
template<typename Derived , typename EmplaceImpl >
template<typename... Args>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( emplace_args< Args... > &&  args)
inline

Definition at line 262 of file Iterator.h.

References folly::gen::move.

262  {
263  return unpackAndEmplace(std::move(args), index_sequence_for<Args...>{});
264  }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
Derived & unpackAndEmplace(Args &args, index_sequence< I... >)
Definition: Iterator.h:287
template<typename Derived , typename EmplaceImpl >
emplace_iterator_base& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( emplace_iterator_base< Derived, EmplaceImpl, false > &  )
default
template<typename Derived , typename EmplaceImpl >
emplace_iterator_base& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( const emplace_iterator_base< Derived, EmplaceImpl, false > &  )
default
template<typename Derived , typename EmplaceImpl >
emplace_iterator_base& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::operator= ( emplace_iterator_base< Derived, EmplaceImpl, false > &&  )
defaultnoexcept
template<typename Derived , typename EmplaceImpl >
template<typename Args , std::size_t... I>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::unpackAndEmplace ( Args &  args,
index_sequence< I... >   
)
inlineprotected

Definition at line 287 of file Iterator.h.

References testing::Args().

287  {
288  this->emplace(get_emplace_arg<I>(args)...);
289  return static_cast<Derived&>(*this);
290  }
template<typename Derived , typename EmplaceImpl >
template<typename Args , std::size_t... I>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::unpackAndEmplace ( const Args &  args,
index_sequence< I... >   
)
inlineprotected

Definition at line 292 of file Iterator.h.

References testing::Args().

292  {
293  this->emplace(get_emplace_arg<I>(args)...);
294  return static_cast<Derived&>(*this);
295  }
template<typename Derived , typename EmplaceImpl >
template<typename Args , std::size_t... I>
Derived& folly::detail::emplace_iterator_base< Derived, EmplaceImpl, false >::unpackAndEmplace ( Args &&  args,
index_sequence< I... >   
)
inlineprotected

Definition at line 297 of file Iterator.h.

References folly::gen::move.

297  {
298  this->emplace(get_emplace_arg<I>(std::move(args))...);
299  return static_cast<Derived&>(*this);
300  }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567

The documentation for this class was generated from the following file: