CG-Project2
Loading...
Searching...
No Matches
Utils.hpp
1#pragma once
2
3template <typename T>
4struct Pair {
5 T x, y;
6
7 friend bool operator==(const Pair<T>& lhs, const Pair<T>& rhs) {
8 return (lhs.x == rhs.x) && (lhs.y == rhs.y);
9 }
10};
11
12#include <memory>
13
14template <typename T>
15using Unique = std::unique_ptr<T>;
16
17template <typename T, typename... Args>
18constexpr Unique<T> CreateUnique(Args &&...args) { return std::make_unique<T>(std::forward<Args>(args)...); }
19
20template <typename T>
21using Shared = std::shared_ptr<T>;
22
23template <typename T, typename... Args>
24constexpr Shared<T> CreateShared(Args &&...args) { return std::make_shared<T>(std::forward<Args>(args)...); }
25
26#include <cassert>
27
28// MACROS
29
30#define ASSERT(exp) assert(exp)
31
32// `container.begin(), container.end()`
33#define ALL(a) (a.begin()), (a.end())
34
35// Class name
36#define CLASSNAME(elem) typeid(elem).name()
Definition Utils.hpp:4