move c'tor should not take const argument
make c'tors of Descriptors explicit
fix name of include guard
fix name of include guard
unique_ptr<T> should be unique_ptr<T[]> when used with array