Постироничные идеи для ебаного C++ – Telegram
Постироничные идеи для ебаного C++
323 subscribers
51 photos
1 video
2 files
20 links
Download Telegram
Channel name was changed to «Энтерпрайз идеи для Rust»
Вы думали это первоапрельская шутка?
#![no_main] 

#[link_section=".text"]
#[no_mangle]
pub static main: [u32; 9] = [
3237986353,
3355442993,
120950088,
822083584,
252621522,
1699267333,
745499756,
1919899424,
169960556,
];
👍6
В std::function нельзя сложить лямбду которая захватила uptr
Channel name was changed to «Постироничные идеи для ебаного C++»
struct slice {
T* ptr; // петербург
size_t len; // ленобласть
};
😁12🤡1🤣1
Если вы понимаете этот код, то вам открыт доступ в айти-канал с мемами для программистов 👇

template <typename T, typename... Args,
typename = std::void_t<decltype(::new(std::declval<void*>()) T(std::declval<Args>()...))>>
AA_ALWAYS_INLINE constexpr T* construct_at(const T* location, Args&&... args) noexcept(noexcept(
::new(const_cast<void*>(static_cast<const volatile void*>(location))) T(std::forward<Args>(args)...))) {
return ::new (const_cast<void*>(static_cast<const volatile void*>(location)))
T(std::forward<Args>(args)...);
}
😁1
#include <cinttypes>
#include <string>
#include <variant>
#include <optional>
#include <vector>
using u8 =uint8_t;
using i8 = int8_t;
using u16= uint16_t;
using i16 = int16_t;
using u32= uint32_t;
using i32 = int32_t;
using u64 = uint64_t;
using i64 = int64_t;
using usize = size_t;
using isize = ptrdiff_t;
using f32 = float;
using f64 = double;
using String = std::string;
template <typename T>
using Vec = std::vector<T>;
template <typename T>
using Option = std::optional<T>;
Программируйте на плюсах правильно!
1
trait Abs { fn abs(self) -> Self; }
impl Abs for i64 {
fn abs(self) -> Self { 2 * self }
}
fn main() {
let x = 42;
println!("{} {}", x.abs(), x.abs());
}

$ rustc abs.rs -o abs && ./abs 
84 42
🤯3🤨1
error-log
9 MB
namespace ns {
struct Foo;
using Foo = int;
}
#include <fmt/format.h>

$ time g++-13 -std=gnu++20 -c foo.cpp 2>error-log
real 1m44.740s
user 1m44.370s
sys 0m0.313s

$ du -h error-log
9.1M error-log
🤯2😁1
План по развалу проклятой Америки:
1. Присоединяем Грузию к США как штат
2. Нарушается ODR, пендосы переиграны
👍7
std::ranges она как девушка, конфетно-букетный период проходит и без макияжа уже не кажется так красиво

#define SIDE_EFFECT_VIEW(closure) \
std::views::transform([&](auto&& i) { \
closure(); \
return std::move(i); \
})

auto BitInverseShuffle(std::vector<int>& data) -> void {
const int size = data.size();
int j = 0;
std::ranges::for_each(std::views::iota(0, size) | SIDE_EFFECT_VIEW([&]() {
int bit = size >> 1;
for (; j & bit; bit >>= 1) {
j ^= bit;
}
j ^= bit;
}) | std::views::filter([&j](int i) { return i < j; }),
[&j, &data](int i) { std::swap(data[i], data[j]); });
}
😁4
Мало кто знает, но JavaScript унаследовал от C-семейства не только фигурные скобки, но и свои знаменитые опциональные точки с запятой.
Например, в C++ можно смело опускать точку с запятой после return в следующем коде:
void add_if_missing(std::vector<Item>& v, Item item) {
if (std::ranges::find(v, item) != v.end())
return;
v.push_back(item);
}
👍8