https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102482
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Federico Kircheis from comment #0) > While the warning is true, the code is completely safe, but the warnings > seems to imply that foo will access a dangling pointer. In this case it's safe because the span obejct has the same lifetime as the initializer_list, but in general that's not true. The warning comes from the constructor, and is independent of the context in which it's being constructed. > so I assume the warning is std::initializer_list specific. Yes. std::initializer_list is a magic language type that the compiler knows all about. std::vector is just opaque C++ code that the compiler knows nothing about.