Constructing a span containing a non-copyable type fails if volatile qualified, requires specifying a volatile overload for both copy and move constructors. example. Additionally the behaviour of libc++ and libstdc++ differ when deducing the size of an array type constructor if the type is volatile. example