use inheriting constructors, since clang's support is pretty good now