00001 #ifndef DataFormats_Common_CloneTrait_h 00002 #define DataFormats_Common_CloneTrait_h 00003 #include "DataFormats/Common/interface/CopyPolicy.h" 00004 #include "DataFormats/Common/interface/OwnVector.h" 00005 #include "DataFormats/Common/interface/View.h" 00006 #include "DataFormats/Common/interface/RefToBaseVector.h" 00007 #include <vector> 00008 00009 namespace edm { 00010 namespace clonehelper { 00011 template<typename T> struct CloneTrait; 00012 00013 template<typename T> 00014 struct CloneTrait<std::vector<T> > { 00015 typedef CopyPolicy<T> type; 00016 }; 00017 00018 template<typename T> 00019 struct CloneTrait<edm::OwnVector<T> > { 00020 typedef ClonePolicy<T> type; 00021 }; 00022 00023 template<typename T> 00024 struct CloneTrait<edm::View<T> > { 00025 typedef ClonePolicy<T> type; 00026 }; 00027 00028 template<typename T> 00029 struct CloneTrait<edm::RefToBaseVector<T> > { 00030 typedef CopyPolicy<RefToBase<T> > type; 00031 }; 00032 00033 } 00034 } 00035 00036 #endif