17 template<
typename T,
typename ...Args>
20 return std::unique_ptr<T>(
new T(std::forward<Args>(args)...));
29 return std::unique_ptr<T>(
new T());
32 template<
typename T,
typename P1>
35 return std::unique_ptr<T>(
new T(
36 std::forward<P1>(p1)));
39 template<
typename T,
typename P1,
typename P2>
42 return std::unique_ptr<T>(
new T(
43 std::forward<P1>(p1), std::forward<P2>(p2)));
46 template<
typename T,
typename P1,
typename P2,
typename P3>
49 return std::unique_ptr<T>(
new T(
50 std::forward<P1>(p1), std::forward<P2>(p2),
51 std::forward<P3>(
p3)));
54 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4>
57 return std::unique_ptr<T>(
new T(
58 std::forward<P1>(p1), std::forward<P2>(p2),
59 std::forward<P3>(
p3), std::forward<P4>(
p4)));
62 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
66 return std::unique_ptr<T>(
new T(
67 std::forward<P1>(p1), std::forward<P2>(p2),
68 std::forward<P3>(
p3), std::forward<P4>(
p4),
69 std::forward<P5>(p5)));
72 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
73 typename P5,
typename P6>
77 return std::unique_ptr<T>(
new T(
78 std::forward<P1>(p1), std::forward<P2>(p2),
79 std::forward<P3>(
p3), std::forward<P4>(
p4),
80 std::forward<P5>(p5), std::forward<P6>(p6)));
83 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
84 typename P5,
typename P6,
typename P7>
88 return std::unique_ptr<T>(
new T(
89 std::forward<P1>(p1), std::forward<P2>(p2),
90 std::forward<P3>(
p3), std::forward<P4>(
p4),
91 std::forward<P5>(p5), std::forward<P6>(p6),
92 std::forward<P7>(p7)));
95 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
96 typename P5,
typename P6,
typename P7,
typename P8>
98 P6&& p6, P7&& p7, P8&& p8)
100 return std::unique_ptr<T>(
new T(
101 std::forward<P1>(p1), std::forward<P2>(p2),
102 std::forward<P3>(
p3), std::forward<P4>(
p4),
103 std::forward<P5>(p5), std::forward<P6>(p6),
104 std::forward<P7>(p7), std::forward<P8>(p8)));
107 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
108 typename P5,
typename P6,
typename P7,
typename P8,
111 P6&& p6, P7&& p7, P8&& p8, P9&& p9)
113 return std::unique_ptr<T>(
new T(
114 std::forward<P1>(p1), std::forward<P2>(p2),
115 std::forward<P3>(
p3), std::forward<P4>(
p4),
116 std::forward<P5>(p5), std::forward<P6>(p6),
117 std::forward<P7>(p7), std::forward<P8>(p8),
118 std::forward<P9>(p9)));
121 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
122 typename P5,
typename P6,
typename P7,
typename P8,
123 typename P9,
typename P10>
125 P6&& p6, P7&& p7, P8&& p8, P9&& p9, P10&& p10)
127 return std::unique_ptr<T>(
new T(
128 std::forward<P1>(p1), std::forward<P2 >(p2 ),
129 std::forward<P3>(
p3), std::forward<P4 >(
p4 ),
130 std::forward<P5>(p5), std::forward<P6 >(p6 ),
131 std::forward<P7>(p7), std::forward<P8 >(p8 ),
132 std::forward<P9>(p9), std::forward<P10>(p10)));
135 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
136 typename P5,
typename P6,
typename P7,
typename P8,
137 typename P9,
typename P10,
typename P11>
139 P6&& p6, P7&& p7, P8&& p8, P9&& p9, P10&& p10,
142 return std::unique_ptr<T>(
new T(
143 std::forward<P1 >(p1 ), std::forward<P2 >(p2 ),
144 std::forward<P3 >(
p3 ), std::forward<P4 >(
p4 ),
145 std::forward<P5 >(p5 ), std::forward<P6 >(p6 ),
146 std::forward<P7 >(p7 ), std::forward<P8 >(p8 ),
147 std::forward<P9 >(p9 ), std::forward<P10>(p10),
148 std::forward<P11>(p11)));
151 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
152 typename P5,
typename P6,
typename P7,
typename P8,
153 typename P9,
typename P10,
typename P11,
typename P12>
155 P6&& p6, P7&& p7, P8&& p8, P9&& p9, P10&& p10,
156 P11&& p11, P12&& p12)
158 return std::unique_ptr<T>(
new T(
159 std::forward<P1 >(p1 ), std::forward<P2 >(p2 ),
160 std::forward<P3 >(
p3 ), std::forward<P4 >(
p4 ),
161 std::forward<P5 >(p5 ), std::forward<P6 >(p6 ),
162 std::forward<P7 >(p7 ), std::forward<P8 >(p8 ),
163 std::forward<P9 >(p9 ), std::forward<P10>(p10),
164 std::forward<P11>(p11), std::forward<P12>(p12)));
167 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
168 typename P5,
typename P6,
typename P7,
typename P8,
169 typename P9,
typename P10,
typename P11,
typename P12,
172 P6&& p6, P7&& p7, P8&& p8, P9&& p9, P10&& p10,
173 P11&& p11, P12&& p12, P13&& p13)
175 return std::unique_ptr<T>(
new T(
176 std::forward<P1 >(p1 ), std::forward<P2 >(p2 ),
177 std::forward<P3 >(
p3 ), std::forward<P4 >(
p4 ),
178 std::forward<P5 >(p5 ), std::forward<P6 >(p6 ),
179 std::forward<P7 >(p7 ), std::forward<P8 >(p8 ),
180 std::forward<P9 >(p9 ), std::forward<P10>(p10),
181 std::forward<P11>(p11), std::forward<P12>(p12),
182 std::forward<P13>(p13)));
mat3 p3(vec3(1, 2, 3), vec3(4, 5, 6), vec3(7, 0, 9))
mat4 p4(vec4(1, 2, 3, 4), vec4(3, 4, 5, 6), vec4(5, 0, 7, 8), vec4(7, 8, 9, 0))
std::unique_ptr< T > make_unique()