Variant Type::CreateDynamicVariadic(const ArgumentList &arguments) const { InvokableSignature signature; for (auto &argument : arguments) signature.emplace_back( argument.GetType( ) ); auto &constructor = GetDynamicConstructor( signature ); return constructor.Invoke( arguments ); }
Variant Type::CreateDynamic(Args&&... args) const { static InvokableSignature signature; static bool initial = true; if (initial) { TypeUnpacker<Args...>::Apply( signature ); initial = false; } auto &constructor = GetDynamicConstructor( signature ); ArgumentList arguments { std::forward<Args>( args )... }; return constructor.Invoke( arguments ); }