https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118053
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|needs-reduction |
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
// PR c++/118053
template <typename> struct allocator_traits;
template <typename> struct allocator;
template <typename _Tp> struct allocator_traits<allocator<_Tp>> {
using pointer = _Tp *;
};
struct __alloc_traits : allocator_traits<allocator<int>> {};
struct _Vector_base {
__alloc_traits::pointer _M_finish;
struct _Vector_impl {
_Vector_impl(_Vector_impl &&);
} _M_impl;
};
template <typename _Tp> struct vector : _Vector_base {
vector(_Tp);
constexpr auto back() { return *_M_finish; }
};
template <typename Funct> void
run(Funct funct) { funct(1); }
vector<int>
runner() try {
vector vec{1};
run([&](auto) { vec.back(); });
return vec;
} catch (...) {
return 1;
}