In the case of D, it's a C compatibility thing. Other languages I don't know.
FYI,
auto x = 1 < 2 < 3;
as C++ is accepted (but warned about) by GCC as
x.cpp:19:20: warning: comparisons like ‘X<=Y<=Z’ do not have
their mathematical meaning [-Wparentheses]
auto x = 1 < 2 < 3;
Clang gives no warning.
