I can understand what is is_constructible_v<std::string, std::string&&>.
But what does is_constructible_v<std::string&&, std::string&&> mean by?
What is difference between is_constructible_v<std::string, std::string&&> and is_constructible_v<std::string&&, std::string&&>?
I think that is_constructible_v<std::string&&, std::string&&> means that construct rvalue from rvalue. But I'm not clear what does constructing rvalue mean. If T is just constructible, it's constructor always could be used as rvalue. Is this the meaning of constructing rvalue?
std::is_constructible_v<std::string&&, std::string&&>tests ifis well-formed (see [meta.unary.prop] p9), which it is. You are allowed to create an rvalue reference like so: