// Test for range-based for loop
// Test the loop with an initializer_list

// { dg-do run { target c++11 } }

#include <initializer_list>

extern "C" void abort();

template<typename T> T foo()
{
    T sum = 0;
    for (T x : {T(1),T(2),T(3),T(4)})
        sum += x;
    if (sum != T(10))
        abort();

    return sum;
}

int main()
{
    int sum = 0;
    for (int x : {1,2,3,4})
        sum += x;
    if (sum != 10)
        abort();

    foo<int>();
}
