/* PR middle-end/104076 - bogus -Wdangling-pointer on a conditional expression
   { dg-do compile { target { c++11 } } }
   { dg-options "-Wall" } */
namespace std {
template <class T>
struct initializer_list
{
  T *array;
  __SIZE_TYPE__ nelts;
  initializer_list (const T *a, __SIZE_TYPE__ n)
    : array (a), nelts (n) { }
  initializer_list()
  : array (), nelts () { }
  T* begin () const { return array; }
  const T* end () const { return array + nelts; }
};
}
struct S1
{
  S1 (int);
  ~S1 ();
};
struct S2 { S2 (std::initializer_list<S1>); };
S2 f1();
S2 f2(bool b)
{
  return b ? f1() : S2{0};    // { dg-bogus "-Wdangling-pointer" }
}