CMS 3D CMS Logo

GetProduct.h
Go to the documentation of this file.
1 #ifndef DataFormats_Common_GetProduct_h
2 #define DataFormats_Common_GetProduct_h
3 // -*- C++ -*-
4 //
5 // Package: Common
6 // Class : GetProduct
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Sat Oct 20 10:20:20 EDT 2007
19 //
20 
21 // system include files
22 
23 #include <memory>
24 #include <vector>
25 
26 // user include files
27 
28 // forward declarations
29 
30 namespace edm {
31  namespace detail {
32  template <typename COLLECTION>
33  struct GetProduct {
35  typedef typename COLLECTION::const_iterator iter;
36  static const element_type* address(const iter& i) { return &*i; }
37  };
38 
39  // Specialize for vector<unique_ptr<T>>>
40  template <typename T, typename D, typename A>
41  struct GetProduct<std::vector<std::unique_ptr<T, D>, A> > {
42  using element_type = T;
43  using iter = typename std::vector<std::unique_ptr<T, D>, A>::const_iterator;
44  static const element_type* address(const iter& i) { return i->get(); }
45  };
46  } // namespace detail
47 } // namespace edm
48 
49 #endif
mps_fire.i
i
Definition: mps_fire.py:428
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::detail::GetProduct
Definition: GetProduct.h:33
edm::detail::GetProduct< std::vector< std::unique_ptr< T, D >, A > >::address
static const element_type * address(const iter &i)
Definition: GetProduct.h:44
detail
Definition: ConvertingESProducerWithDependenciesT.h:23
edm::detail::GetProduct::address
static const element_type * address(const iter &i)
Definition: GetProduct.h:36
edm::detail::GetProduct::iter
COLLECTION::const_iterator iter
Definition: GetProduct.h:35
A
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
reco::JetExtendedAssociation::value_type
Container::value_type value_type
Definition: JetExtendedAssociation.h:30
std
Definition: JetResolutionObject.h:76
edm::detail::GetProduct< std::vector< std::unique_ptr< T, D >, A > >::iter
typename std::vector< std::unique_ptr< T, D >, A >::const_iterator iter
Definition: GetProduct.h:43
T
long double T
Definition: Basic3DVectorLD.h:48
edm::detail::GetProduct::element_type
COLLECTION::value_type element_type
Definition: GetProduct.h:34
edm::detail::GetProduct< std::vector< std::unique_ptr< T, D >, A > >::element_type
T element_type
Definition: GetProduct.h:42