49template <
typename T>
using SPtr = std::shared_ptr<T>;
51template <
typename T>
using SetPtr = std::unique_ptr<std::set<T>>;
53template <
typename T,
typename G>
using UMap = std::unordered_map<T, SPtr<G>>;
55template <
typename T,
typename G>
56using UMapVec = std::unordered_map<T, std::vector<SPtr<G>>>;
58template <
typename T,
typename G>
using UMapPtr = std::unique_ptr<UMap<T, G>>;
60template <
typename T,
typename G>
63template <
typename T>
using VecSPtr = std::shared_ptr<std::vector<SPtr<T>>>;