Я понимаю, что этот вопрос звучит странно, так что вот немного контекста.
Недавно я был разочарован, узнав, что уменьшение карты в диапазонах С++ 20 не работает, как можно было бы ожидать, т.е.
const double val = data | transform(...) | accumulate (...);
не работает, вы должны написать это неестественным способом:
const double val = accumulate(data | transform(...));
Подробности можно найти по адресу здесь и здесь, но это сводится к тому, что аккумулирование не может устранить неоднозначность между двумя разными сценарии использования.
Так что это заставило меня задуматься:
Если C++20 требует, чтобы вы использовали канал для использования диапазонов, иначе вы не можете не писать
vector<int> v;
sort(v);
но ты должен написать
vector<int> v
v|sort();
решит ли это проблему двусмысленности?
И если это так, хотя это и неестественно для людей, использующих std::sort
и другие алгоритмы STL, мне интересно, будет ли в долгосрочной перспективе это лучшим выбором дизайна.
Примечание. Если этот вопрос слишком расплывчатый, не стесняйтесь проголосовать за закрытие, но я чувствую, что это законный вопрос дизайна, на который можно ответить относительно непредвзято, особенно если я неправильно понимаю проблему.