Initializer Liste der Variablen

Ist es möglich ein @ zu erstellinitializer_list von Variablen, wie zum Beispiel Funktionsargumente (vgl. functiontest)?

Der folgende Code funktioniert, und weder Clang noch GCC beschweren sich über irgendetwas, aber ich möchte nur sicherstellen, dass dies in Ordnung ist.

#include <iostream>
#include <initializer_list>

template <class T>
struct array
{
    T *ptr;
    size_t len;

    array() { clear(); }
    array( T *p, size_t l ) { assign(p,l); }

    inline void clear() { ptr=nullptr; len=0; }
    inline void assign( T *p, size_t l ) { ptr=p; len=l; }

    inline T& operator[] ( size_t i ) const { return ptr[i]; }
};

template <class T>
inline array<const T> wrap( const std::initializer_list<T>& lst )
    { return array<const T>( lst.begin(), lst.size() ); }

void test( int a, int b, int c )
{
    auto ar = wrap({a,b,c});
    std::cout<< ar[2] << std::endl;
}

int main()
{
    auto a = wrap({1,2,3});
    std::cout<< a[2] << std::endl;

    test(1,2,3);
}

Seite Frage; wenn ich versucht habe, mein umschlossenes Array in @ zurückzugebtest, die Initialisierungsliste{a,b,c} würde den Gültigkeitsbereich verlassen und das von mir zurückgegebene Array wäre ungültig - ist das richtig?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage