http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51365
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-12-01 01:07:27 UTC --- Here's another testcase: #include <future> #include <memory> template<typename T> struct final_allocator final : std::allocator<T> { final_allocator() = default; template<typename U> final_allocator(const final_allocator<U>&) { } template<typename U> struct rebind { typedef final_allocator<U> other; }; }; final_allocator<int> a; std::promise<int> p(std::allocator_arg, a);