- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
// A sample standard C++20 program that prints
// the first N Pythagorean triples.
#include <iostream>
#include <optional>
#include <ranges> // New header!
using namespace std;
// maybe_view defines a view over zero or one
// objects.
template<Semiregular T>
struct maybe_view : view_interface<maybe_view<T>> {
maybe_view() = default;
maybe_view(T t) : data_(std::move(t)) {
}
T const *begin() const noexcept {
return data_ ? &*data_ : nullptr;
}
T const *end() const noexcept {
return data_ ? &*data_ + 1 : nullptr;
}
private:
optional<T> data_{};
};
// "for_each" creates a new view by applying a
// transformation to each element in an input
// range, and flattening the resulting range of
// ranges.
// (This uses one syntax for constrained lambdas
// in C++20.)
inline constexpr auto for_each =
[]<Range R,
Iterator I = iterator_t<R>,
IndirectUnaryInvocable<I> Fun>(R&& r, Fun fun)
requires Range<indirect_result_t<Fun, I>> {
return std::forward<R>(r)
| view::transform(std::move(fun))
| view::join;
};
// "yield_if" takes a bool and a value and
// returns a view of zero or one elements.
inline constexpr auto yield_if =
[]<Semiregular T>(bool b, T x) {
return b ? maybe_view{std::move(x)}
: maybe_view<T>{};
};
int main() {
// Define an infinite range of all the
// Pythagorean triples:
using view::iota;
auto triples =
for_each(iota(1), [](int z) {
return for_each(iota(1, z+1), [=](int x) {
return for_each(iota(x, z+1), [=](int y) {
return yield_if(x*x + y*y == z*z,
make_tuple(x, y, z));
});
});
});
// Display the first 10 triples
for(auto triple : triples | view::take(10)) {
cout << '('
<< get<0>(triple) << ','
<< get<1>(triple) << ','
<< get<2>(triple) << ')' << '\n';
}
}
«C++20»: ещё больше модерна! Ещё больше шаблонов! Ещё больше ебанутых конструкций! Ещё больше блядского цирка!
s: http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
А зачем на этом вообще писать, если на этом так сложно писать хоть сколько-нибудь рабочие программы? Может набрейнфак сразу тогда?
Чтобы не уволили же!
А ещё выбор языка надо как-то обосновывать начальству, и если в случае «C++» можно наплести про скорость, современность, надёжность и вообще миллионы мух, то обосновать «Brainfuck» будет проблематично. А если начальства нет — так и увольнять некому, надо на нормальном языке писать.
> А ещё выбор языка надо как-то обосновывать начальству, и если в случае «C++» можно наплести про скорость, современность, надёжность и вообще миллионы мух, то обосновать «Brainfuck» будет проблематично. А если начальства нет — так и увольнять некому, надо на нормальном языке писать.
Ну да, это как сравнивать больного олигофренией в степени имбецильности с какими-нибудь поехавшим психом, считающим что его рептилоиды с планеты Нибиру похитили и вживили ему чип в анус. У первого нет вообще никаких шансов кого-либо в чем-либо убедить т.к. он полный дебил, а второй может создать псевдорелигиозную секту с ящериками и Иисусами, в которую наберет таких же ебанутых психов.
В общем от брейнфака (от имбецилов) вреда явно меньше, чем от modern C++ (реально поехавших ебанавтов, агитирущих других людей тоже этот в этот пиздец уверовать)
Какая глупость, всем давно уже известно что рептилоиды не из нашей солнечной системы.
На листах одной старой книжки было написано, что-то про "выполнить логический сдвиг...". Там ещё высохший комар лежал между страниц.
Гомоиконы!
http://php.net/manual/ru/book.ds.php
Такими темпами в "PHP" скоро будет аналог "STL" и на нём можно будет писать, почти как на "C++".
Хоть си-плас-плас,
Всё равно
You shall not pass.