Open
Description
llvm-project/libcxx/include/__ranges/to.h
Lines 112 to 124 in 6c062af
Range-based for loop is not guaranteed to be well-formed for input_range
as it does not extract iterator-pair through ranges::begin
/ranges::end
:
https://godbolt.org/z/Kc3dsvnfW
#include <ranges>
struct Vector {
void push_back(int);
};
struct OnlyADLRange {
void begin() = delete;
void end() = delete;
friend int* begin(OnlyADLRange&);
friend int* end(OnlyADLRange&);
};
int main() {
std::ranges::contiguous_range auto r = OnlyADLRange{};
auto v = r | std::ranges::to<Vector>(); // only well-formed in libstdc++
}