#include <ranges>
volatile char vs[42] = {};
std::string s1(std::begin(vs), std::end(vs)); // ok
std::string s2(std::from_range, vs | std::views::reverse); // ok
std::string s3(std::from_range, vs); // not ok
https://godbolt.org/z/vqqEP4c86
s3 should not be rejected, but MSV-STL expected the char array not to be volatile, leading to a hard error in the function body.