view gcc/testsuite/g++.dg/warn/Winit-list3.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

// PR c++/67445
// { dg-do compile { target c++11 } }

#include <initializer_list>

using SL = std::initializer_list<char const*>;

SL retArray(int i) noexcept
{
  if (i == 0)
    {
      SL l{"Test 1", "Test 2", "Test 3"}; // { dg-message "declared" }
      return l;			// { dg-warning "initializer_list" }
    }
  else if (i == 1)
    return SL{"Test 1", "Test 2", "Test 3"}; // { dg-warning "initializer_list" }
  else if (i == 2)
    return {"Test 1", "Test 2", "Test 3"}; // { dg-warning "initializer_list" }
  else
    {
      static SL l{"Test 1", "Test 2", "Test 3"};
      return l;			// no warning about returning static.
    }
}

const char *p;
int main(int, char const* const*)
{
  for (auto&& i : retArray(1))
    {
      p = i;
    }
  return 0;
}