add std::unique_ptr specialization, use const T& for value()