Add weak_ptr

is_default_constructible instead of has_trivial_default_constructor, and other
remove the has_trivial things

-- all done --
