1 // Copyright (C) 2000 Stephen Cleary
3 // Distributed under the Boost Software License, Version 1.0. (See accompany-
4 // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 // See http://www.boost.org for updates, documentation, and revision history.
8 // This file was AUTOMATICALLY GENERATED from "stdin"
9 // Do NOT include directly!
12 template <typename T0>
13 element_type * construct(T0 & a0)
15 element_type * const ret = (malloc)();
18 try { new (ret) element_type(a0); }
19 catch (...) { (free)(ret); throw; }
22 template <typename T0>
23 element_type * construct(const T0 & a0)
25 element_type * const ret = (malloc)();
28 try { new (ret) element_type(a0); }
29 catch (...) { (free)(ret); throw; }
32 template <typename T0>
33 element_type * construct(volatile T0 & a0)
35 element_type * const ret = (malloc)();
38 try { new (ret) element_type(a0); }
39 catch (...) { (free)(ret); throw; }
42 template <typename T0>
43 element_type * construct(const volatile T0 & a0)
45 element_type * const ret = (malloc)();
48 try { new (ret) element_type(a0); }
49 catch (...) { (free)(ret); throw; }
52 template <typename T0, typename T1>
53 element_type * construct(T0 & a0, T1 & a1)
55 element_type * const ret = (malloc)();
58 try { new (ret) element_type(a0, a1); }
59 catch (...) { (free)(ret); throw; }
62 template <typename T0, typename T1>
63 element_type * construct(const T0 & a0, T1 & a1)
65 element_type * const ret = (malloc)();
68 try { new (ret) element_type(a0, a1); }
69 catch (...) { (free)(ret); throw; }
72 template <typename T0, typename T1>
73 element_type * construct(volatile T0 & a0, T1 & a1)
75 element_type * const ret = (malloc)();
78 try { new (ret) element_type(a0, a1); }
79 catch (...) { (free)(ret); throw; }
82 template <typename T0, typename T1>
83 element_type * construct(const volatile T0 & a0, T1 & a1)
85 element_type * const ret = (malloc)();
88 try { new (ret) element_type(a0, a1); }
89 catch (...) { (free)(ret); throw; }
92 template <typename T0, typename T1>
93 element_type * construct(T0 & a0, const T1 & a1)
95 element_type * const ret = (malloc)();
98 try { new (ret) element_type(a0, a1); }
99 catch (...) { (free)(ret); throw; }
102 template <typename T0, typename T1>
103 element_type * construct(const T0 & a0, const T1 & a1)
105 element_type * const ret = (malloc)();
108 try { new (ret) element_type(a0, a1); }
109 catch (...) { (free)(ret); throw; }
112 template <typename T0, typename T1>
113 element_type * construct(volatile T0 & a0, const T1 & a1)
115 element_type * const ret = (malloc)();
118 try { new (ret) element_type(a0, a1); }
119 catch (...) { (free)(ret); throw; }
122 template <typename T0, typename T1>
123 element_type * construct(const volatile T0 & a0, const T1 & a1)
125 element_type * const ret = (malloc)();
128 try { new (ret) element_type(a0, a1); }
129 catch (...) { (free)(ret); throw; }
132 template <typename T0, typename T1>
133 element_type * construct(T0 & a0, volatile T1 & a1)
135 element_type * const ret = (malloc)();
138 try { new (ret) element_type(a0, a1); }
139 catch (...) { (free)(ret); throw; }
142 template <typename T0, typename T1>
143 element_type * construct(const T0 & a0, volatile T1 & a1)
145 element_type * const ret = (malloc)();
148 try { new (ret) element_type(a0, a1); }
149 catch (...) { (free)(ret); throw; }
152 template <typename T0, typename T1>
153 element_type * construct(volatile T0 & a0, volatile T1 & a1)
155 element_type * const ret = (malloc)();
158 try { new (ret) element_type(a0, a1); }
159 catch (...) { (free)(ret); throw; }
162 template <typename T0, typename T1>
163 element_type * construct(const volatile T0 & a0, volatile T1 & a1)
165 element_type * const ret = (malloc)();
168 try { new (ret) element_type(a0, a1); }
169 catch (...) { (free)(ret); throw; }
172 template <typename T0, typename T1>
173 element_type * construct(T0 & a0, const volatile T1 & a1)
175 element_type * const ret = (malloc)();
178 try { new (ret) element_type(a0, a1); }
179 catch (...) { (free)(ret); throw; }
182 template <typename T0, typename T1>
183 element_type * construct(const T0 & a0, const volatile T1 & a1)
185 element_type * const ret = (malloc)();
188 try { new (ret) element_type(a0, a1); }
189 catch (...) { (free)(ret); throw; }
192 template <typename T0, typename T1>
193 element_type * construct(volatile T0 & a0, const volatile T1 & a1)
195 element_type * const ret = (malloc)();
198 try { new (ret) element_type(a0, a1); }
199 catch (...) { (free)(ret); throw; }
202 template <typename T0, typename T1>
203 element_type * construct(const volatile T0 & a0, const volatile T1 & a1)
205 element_type * const ret = (malloc)();
208 try { new (ret) element_type(a0, a1); }
209 catch (...) { (free)(ret); throw; }
212 template <typename T0, typename T1, typename T2>
213 element_type * construct(T0 & a0, T1 & a1, T2 & a2)
215 element_type * const ret = (malloc)();
218 try { new (ret) element_type(a0, a1, a2); }
219 catch (...) { (free)(ret); throw; }
222 template <typename T0, typename T1, typename T2>
223 element_type * construct(const T0 & a0, T1 & a1, T2 & a2)
225 element_type * const ret = (malloc)();
228 try { new (ret) element_type(a0, a1, a2); }
229 catch (...) { (free)(ret); throw; }
232 template <typename T0, typename T1, typename T2>
233 element_type * construct(volatile T0 & a0, T1 & a1, T2 & a2)
235 element_type * const ret = (malloc)();
238 try { new (ret) element_type(a0, a1, a2); }
239 catch (...) { (free)(ret); throw; }
242 template <typename T0, typename T1, typename T2>
243 element_type * construct(const volatile T0 & a0, T1 & a1, T2 & a2)
245 element_type * const ret = (malloc)();
248 try { new (ret) element_type(a0, a1, a2); }
249 catch (...) { (free)(ret); throw; }
252 template <typename T0, typename T1, typename T2>
253 element_type * construct(T0 & a0, const T1 & a1, T2 & a2)
255 element_type * const ret = (malloc)();
258 try { new (ret) element_type(a0, a1, a2); }
259 catch (...) { (free)(ret); throw; }
262 template <typename T0, typename T1, typename T2>
263 element_type * construct(const T0 & a0, const T1 & a1, T2 & a2)
265 element_type * const ret = (malloc)();
268 try { new (ret) element_type(a0, a1, a2); }
269 catch (...) { (free)(ret); throw; }
272 template <typename T0, typename T1, typename T2>
273 element_type * construct(volatile T0 & a0, const T1 & a1, T2 & a2)
275 element_type * const ret = (malloc)();
278 try { new (ret) element_type(a0, a1, a2); }
279 catch (...) { (free)(ret); throw; }
282 template <typename T0, typename T1, typename T2>
283 element_type * construct(const volatile T0 & a0, const T1 & a1, T2 & a2)
285 element_type * const ret = (malloc)();
288 try { new (ret) element_type(a0, a1, a2); }
289 catch (...) { (free)(ret); throw; }
292 template <typename T0, typename T1, typename T2>
293 element_type * construct(T0 & a0, volatile T1 & a1, T2 & a2)
295 element_type * const ret = (malloc)();
298 try { new (ret) element_type(a0, a1, a2); }
299 catch (...) { (free)(ret); throw; }
302 template <typename T0, typename T1, typename T2>
303 element_type * construct(const T0 & a0, volatile T1 & a1, T2 & a2)
305 element_type * const ret = (malloc)();
308 try { new (ret) element_type(a0, a1, a2); }
309 catch (...) { (free)(ret); throw; }
312 template <typename T0, typename T1, typename T2>
313 element_type * construct(volatile T0 & a0, volatile T1 & a1, T2 & a2)
315 element_type * const ret = (malloc)();
318 try { new (ret) element_type(a0, a1, a2); }
319 catch (...) { (free)(ret); throw; }
322 template <typename T0, typename T1, typename T2>
323 element_type * construct(const volatile T0 & a0, volatile T1 & a1, T2 & a2)
325 element_type * const ret = (malloc)();
328 try { new (ret) element_type(a0, a1, a2); }
329 catch (...) { (free)(ret); throw; }
332 template <typename T0, typename T1, typename T2>
333 element_type * construct(T0 & a0, const volatile T1 & a1, T2 & a2)
335 element_type * const ret = (malloc)();
338 try { new (ret) element_type(a0, a1, a2); }
339 catch (...) { (free)(ret); throw; }
342 template <typename T0, typename T1, typename T2>
343 element_type * construct(const T0 & a0, const volatile T1 & a1, T2 & a2)
345 element_type * const ret = (malloc)();
348 try { new (ret) element_type(a0, a1, a2); }
349 catch (...) { (free)(ret); throw; }
352 template <typename T0, typename T1, typename T2>
353 element_type * construct(volatile T0 & a0, const volatile T1 & a1, T2 & a2)
355 element_type * const ret = (malloc)();
358 try { new (ret) element_type(a0, a1, a2); }
359 catch (...) { (free)(ret); throw; }
362 template <typename T0, typename T1, typename T2>
363 element_type * construct(const volatile T0 & a0, const volatile T1 & a1, T2 & a2)
365 element_type * const ret = (malloc)();
368 try { new (ret) element_type(a0, a1, a2); }
369 catch (...) { (free)(ret); throw; }
372 template <typename T0, typename T1, typename T2>
373 element_type * construct(T0 & a0, T1 & a1, const T2 & a2)
375 element_type * const ret = (malloc)();
378 try { new (ret) element_type(a0, a1, a2); }
379 catch (...) { (free)(ret); throw; }
382 template <typename T0, typename T1, typename T2>
383 element_type * construct(const T0 & a0, T1 & a1, const T2 & a2)
385 element_type * const ret = (malloc)();
388 try { new (ret) element_type(a0, a1, a2); }
389 catch (...) { (free)(ret); throw; }
392 template <typename T0, typename T1, typename T2>
393 element_type * construct(volatile T0 & a0, T1 & a1, const T2 & a2)
395 element_type * const ret = (malloc)();
398 try { new (ret) element_type(a0, a1, a2); }
399 catch (...) { (free)(ret); throw; }
402 template <typename T0, typename T1, typename T2>
403 element_type * construct(const volatile T0 & a0, T1 & a1, const T2 & a2)
405 element_type * const ret = (malloc)();
408 try { new (ret) element_type(a0, a1, a2); }
409 catch (...) { (free)(ret); throw; }
412 template <typename T0, typename T1, typename T2>
413 element_type * construct(T0 & a0, const T1 & a1, const T2 & a2)
415 element_type * const ret = (malloc)();
418 try { new (ret) element_type(a0, a1, a2); }
419 catch (...) { (free)(ret); throw; }
422 template <typename T0, typename T1, typename T2>
423 element_type * construct(const T0 & a0, const T1 & a1, const T2 & a2)
425 element_type * const ret = (malloc)();
428 try { new (ret) element_type(a0, a1, a2); }
429 catch (...) { (free)(ret); throw; }
432 template <typename T0, typename T1, typename T2>
433 element_type * construct(volatile T0 & a0, const T1 & a1, const T2 & a2)
435 element_type * const ret = (malloc)();
438 try { new (ret) element_type(a0, a1, a2); }
439 catch (...) { (free)(ret); throw; }
442 template <typename T0, typename T1, typename T2>
443 element_type * construct(const volatile T0 & a0, const T1 & a1, const T2 & a2)
445 element_type * const ret = (malloc)();
448 try { new (ret) element_type(a0, a1, a2); }
449 catch (...) { (free)(ret); throw; }
452 template <typename T0, typename T1, typename T2>
453 element_type * construct(T0 & a0, volatile T1 & a1, const T2 & a2)
455 element_type * const ret = (malloc)();
458 try { new (ret) element_type(a0, a1, a2); }
459 catch (...) { (free)(ret); throw; }
462 template <typename T0, typename T1, typename T2>
463 element_type * construct(const T0 & a0, volatile T1 & a1, const T2 & a2)
465 element_type * const ret = (malloc)();
468 try { new (ret) element_type(a0, a1, a2); }
469 catch (...) { (free)(ret); throw; }
472 template <typename T0, typename T1, typename T2>
473 element_type * construct(volatile T0 & a0, volatile T1 & a1, const T2 & a2)
475 element_type * const ret = (malloc)();
478 try { new (ret) element_type(a0, a1, a2); }
479 catch (...) { (free)(ret); throw; }
482 template <typename T0, typename T1, typename T2>
483 element_type * construct(const volatile T0 & a0, volatile T1 & a1, const T2 & a2)
485 element_type * const ret = (malloc)();
488 try { new (ret) element_type(a0, a1, a2); }
489 catch (...) { (free)(ret); throw; }
492 template <typename T0, typename T1, typename T2>
493 element_type * construct(T0 & a0, const volatile T1 & a1, const T2 & a2)
495 element_type * const ret = (malloc)();
498 try { new (ret) element_type(a0, a1, a2); }
499 catch (...) { (free)(ret); throw; }
502 template <typename T0, typename T1, typename T2>
503 element_type * construct(const T0 & a0, const volatile T1 & a1, const T2 & a2)
505 element_type * const ret = (malloc)();
508 try { new (ret) element_type(a0, a1, a2); }
509 catch (...) { (free)(ret); throw; }
512 template <typename T0, typename T1, typename T2>
513 element_type * construct(volatile T0 & a0, const volatile T1 & a1, const T2 & a2)
515 element_type * const ret = (malloc)();
518 try { new (ret) element_type(a0, a1, a2); }
519 catch (...) { (free)(ret); throw; }
522 template <typename T0, typename T1, typename T2>
523 element_type * construct(const volatile T0 & a0, const volatile T1 & a1, const T2 & a2)
525 element_type * const ret = (malloc)();
528 try { new (ret) element_type(a0, a1, a2); }
529 catch (...) { (free)(ret); throw; }
532 template <typename T0, typename T1, typename T2>
533 element_type * construct(T0 & a0, T1 & a1, volatile T2 & a2)
535 element_type * const ret = (malloc)();
538 try { new (ret) element_type(a0, a1, a2); }
539 catch (...) { (free)(ret); throw; }
542 template <typename T0, typename T1, typename T2>
543 element_type * construct(const T0 & a0, T1 & a1, volatile T2 & a2)
545 element_type * const ret = (malloc)();
548 try { new (ret) element_type(a0, a1, a2); }
549 catch (...) { (free)(ret); throw; }
552 template <typename T0, typename T1, typename T2>
553 element_type * construct(volatile T0 & a0, T1 & a1, volatile T2 & a2)
555 element_type * const ret = (malloc)();
558 try { new (ret) element_type(a0, a1, a2); }
559 catch (...) { (free)(ret); throw; }
562 template <typename T0, typename T1, typename T2>
563 element_type * construct(const volatile T0 & a0, T1 & a1, volatile T2 & a2)
565 element_type * const ret = (malloc)();
568 try { new (ret) element_type(a0, a1, a2); }
569 catch (...) { (free)(ret); throw; }
572 template <typename T0, typename T1, typename T2>
573 element_type * construct(T0 & a0, const T1 & a1, volatile T2 & a2)
575 element_type * const ret = (malloc)();
578 try { new (ret) element_type(a0, a1, a2); }
579 catch (...) { (free)(ret); throw; }
582 template <typename T0, typename T1, typename T2>
583 element_type * construct(const T0 & a0, const T1 & a1, volatile T2 & a2)
585 element_type * const ret = (malloc)();
588 try { new (ret) element_type(a0, a1, a2); }
589 catch (...) { (free)(ret); throw; }
592 template <typename T0, typename T1, typename T2>
593 element_type * construct(volatile T0 & a0, const T1 & a1, volatile T2 & a2)
595 element_type * const ret = (malloc)();
598 try { new (ret) element_type(a0, a1, a2); }
599 catch (...) { (free)(ret); throw; }
602 template <typename T0, typename T1, typename T2>
603 element_type * construct(const volatile T0 & a0, const T1 & a1, volatile T2 & a2)
605 element_type * const ret = (malloc)();
608 try { new (ret) element_type(a0, a1, a2); }
609 catch (...) { (free)(ret); throw; }
612 template <typename T0, typename T1, typename T2>
613 element_type * construct(T0 & a0, volatile T1 & a1, volatile T2 & a2)
615 element_type * const ret = (malloc)();
618 try { new (ret) element_type(a0, a1, a2); }
619 catch (...) { (free)(ret); throw; }
622 template <typename T0, typename T1, typename T2>
623 element_type * construct(const T0 & a0, volatile T1 & a1, volatile T2 & a2)
625 element_type * const ret = (malloc)();
628 try { new (ret) element_type(a0, a1, a2); }
629 catch (...) { (free)(ret); throw; }
632 template <typename T0, typename T1, typename T2>
633 element_type * construct(volatile T0 & a0, volatile T1 & a1, volatile T2 & a2)
635 element_type * const ret = (malloc)();
638 try { new (ret) element_type(a0, a1, a2); }
639 catch (...) { (free)(ret); throw; }
642 template <typename T0, typename T1, typename T2>
643 element_type * construct(const volatile T0 & a0, volatile T1 & a1, volatile T2 & a2)
645 element_type * const ret = (malloc)();
648 try { new (ret) element_type(a0, a1, a2); }
649 catch (...) { (free)(ret); throw; }
652 template <typename T0, typename T1, typename T2>
653 element_type * construct(T0 & a0, const volatile T1 & a1, volatile T2 & a2)
655 element_type * const ret = (malloc)();
658 try { new (ret) element_type(a0, a1, a2); }
659 catch (...) { (free)(ret); throw; }
662 template <typename T0, typename T1, typename T2>
663 element_type * construct(const T0 & a0, const volatile T1 & a1, volatile T2 & a2)
665 element_type * const ret = (malloc)();
668 try { new (ret) element_type(a0, a1, a2); }
669 catch (...) { (free)(ret); throw; }
672 template <typename T0, typename T1, typename T2>
673 element_type * construct(volatile T0 & a0, const volatile T1 & a1, volatile T2 & a2)
675 element_type * const ret = (malloc)();
678 try { new (ret) element_type(a0, a1, a2); }
679 catch (...) { (free)(ret); throw; }
682 template <typename T0, typename T1, typename T2>
683 element_type * construct(const volatile T0 & a0, const volatile T1 & a1, volatile T2 & a2)
685 element_type * const ret = (malloc)();
688 try { new (ret) element_type(a0, a1, a2); }
689 catch (...) { (free)(ret); throw; }
692 template <typename T0, typename T1, typename T2>
693 element_type * construct(T0 & a0, T1 & a1, const volatile T2 & a2)
695 element_type * const ret = (malloc)();
698 try { new (ret) element_type(a0, a1, a2); }
699 catch (...) { (free)(ret); throw; }
702 template <typename T0, typename T1, typename T2>
703 element_type * construct(const T0 & a0, T1 & a1, const volatile T2 & a2)
705 element_type * const ret = (malloc)();
708 try { new (ret) element_type(a0, a1, a2); }
709 catch (...) { (free)(ret); throw; }
712 template <typename T0, typename T1, typename T2>
713 element_type * construct(volatile T0 & a0, T1 & a1, const volatile T2 & a2)
715 element_type * const ret = (malloc)();
718 try { new (ret) element_type(a0, a1, a2); }
719 catch (...) { (free)(ret); throw; }
722 template <typename T0, typename T1, typename T2>
723 element_type * construct(const volatile T0 & a0, T1 & a1, const volatile T2 & a2)
725 element_type * const ret = (malloc)();
728 try { new (ret) element_type(a0, a1, a2); }
729 catch (...) { (free)(ret); throw; }
732 template <typename T0, typename T1, typename T2>
733 element_type * construct(T0 & a0, const T1 & a1, const volatile T2 & a2)
735 element_type * const ret = (malloc)();
738 try { new (ret) element_type(a0, a1, a2); }
739 catch (...) { (free)(ret); throw; }
742 template <typename T0, typename T1, typename T2>
743 element_type * construct(const T0 & a0, const T1 & a1, const volatile T2 & a2)
745 element_type * const ret = (malloc)();
748 try { new (ret) element_type(a0, a1, a2); }
749 catch (...) { (free)(ret); throw; }
752 template <typename T0, typename T1, typename T2>
753 element_type * construct(volatile T0 & a0, const T1 & a1, const volatile T2 & a2)
755 element_type * const ret = (malloc)();
758 try { new (ret) element_type(a0, a1, a2); }
759 catch (...) { (free)(ret); throw; }
762 template <typename T0, typename T1, typename T2>
763 element_type * construct(const volatile T0 & a0, const T1 & a1, const volatile T2 & a2)
765 element_type * const ret = (malloc)();
768 try { new (ret) element_type(a0, a1, a2); }
769 catch (...) { (free)(ret); throw; }
772 template <typename T0, typename T1, typename T2>
773 element_type * construct(T0 & a0, volatile T1 & a1, const volatile T2 & a2)
775 element_type * const ret = (malloc)();
778 try { new (ret) element_type(a0, a1, a2); }
779 catch (...) { (free)(ret); throw; }
782 template <typename T0, typename T1, typename T2>
783 element_type * construct(const T0 & a0, volatile T1 & a1, const volatile T2 & a2)
785 element_type * const ret = (malloc)();
788 try { new (ret) element_type(a0, a1, a2); }
789 catch (...) { (free)(ret); throw; }
792 template <typename T0, typename T1, typename T2>
793 element_type * construct(volatile T0 & a0, volatile T1 & a1, const volatile T2 & a2)
795 element_type * const ret = (malloc)();
798 try { new (ret) element_type(a0, a1, a2); }
799 catch (...) { (free)(ret); throw; }
802 template <typename T0, typename T1, typename T2>
803 element_type * construct(const volatile T0 & a0, volatile T1 & a1, const volatile T2 & a2)
805 element_type * const ret = (malloc)();
808 try { new (ret) element_type(a0, a1, a2); }
809 catch (...) { (free)(ret); throw; }
812 template <typename T0, typename T1, typename T2>
813 element_type * construct(T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
815 element_type * const ret = (malloc)();
818 try { new (ret) element_type(a0, a1, a2); }
819 catch (...) { (free)(ret); throw; }
822 template <typename T0, typename T1, typename T2>
823 element_type * construct(const T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
825 element_type * const ret = (malloc)();
828 try { new (ret) element_type(a0, a1, a2); }
829 catch (...) { (free)(ret); throw; }
832 template <typename T0, typename T1, typename T2>
833 element_type * construct(volatile T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
835 element_type * const ret = (malloc)();
838 try { new (ret) element_type(a0, a1, a2); }
839 catch (...) { (free)(ret); throw; }
842 template <typename T0, typename T1, typename T2>
843 element_type * construct(const volatile T0 & a0, const volatile T1 & a1, const volatile T2 & a2)
845 element_type * const ret = (malloc)();
848 try { new (ret) element_type(a0, a1, a2); }
849 catch (...) { (free)(ret); throw; }