shared_ptr is defined in <memory> - since <array> is handled before <memory> gcc doesn't know about the type "shared_ptr" yet