Здравствуйте, AlexRK, Вы писали:
ARK>>>Это тоже верно, но я сейчас говорю про текущую ситуацию — с чистотой функций никто не заморачивается (очень зря), но деление все равно есть из-за псевдотипа void, не позволяющего работать однотипно с произвольными функциями.
N>>А чем он так мешает? Ну, присвоить результат нельзя. Так и при не-void его присваивать необязательно.
ARK>Речь не о том, мешает или не мешает, а о том, что функции делятся на два мира — нельзя использовать void в обобщенном коде.
Ну это только потому, что никто не хотел доработать C++ в эту сторону. Хотели бы — придумали, обёрток такого рода начиная с C++11 "вагон и маленькая тележка".
ARK>>>Я не большой знаток C++
, но не помню, что в нем это "есть". Чтобы использовать пары и туплы для комбинирования, надо, чтобы их не только возвращали, но и принимали входными параметрами, разве нет? Или можно НАПРЯМУЮ сунуть тупл (2, "test") в функцию "void Func(int a, string b)", т.е. вызвать как "Func(myTuple);"?
N>>Можно.
ARK>Не конпелируется что-то: https://ideone.com/Q3TtwD
А, я криво прочитал. Напрямую не получится, нужно, чтобы и аргумент был tuple<>.
Но косвенно такое построить можно, на variadic templates. std::function, например, оборачивает лямбды как раз через такие фокусы.
N>>Даже в штатной библиотеке какой-нибудь std::map::insert принимает std::pair<> как аргумент.
ARK>Это и в паскале можно.
Структурой? Слишком банально.