| 782 | */ |
| 783 | template<typename T> |
| 784 | inline typename std::enable_if<!std::is_same<T, long double>::value, T>::type |
| 785 | get(int argNum) { |
| 786 | assert(argNum < totalCapacity); |
| 787 | #pragma GCC diagnostic push |
| 788 | #pragma GCC diagnostic ignored "-Wstrict-aliasing" |
| 789 | if (argNum < INITIAL_SIZE) |
| 790 | return *(reinterpret_cast<T*>(&rawArgs[argNum])); |
| 791 | else |
| 792 | return *(reinterpret_cast<T*>(&rawArgsExtension[argNum - 10])); |
| 793 | #pragma GCC diagnostic pop |
| 794 | } |
| 795 | |
| 796 | /** |
| 797 | * Overload for push() that does nothing for the "long double" type |
no outgoing calls