- 1
- 2
Сколько красивых подростков проходит мимо каждый день...
Почему нельзя просто взять - и отсосать, прямо на улице?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Сколько красивых подростков проходит мимо каждый день...
Почему нельзя просто взять - и отсосать, прямо на улице?
Можно? Да ну нахуй!
−1
// https://godbolt.org/z/ZsXDti
#include <boost/hana.hpp>
#include <range/v3/view.hpp>
#include <range/v3/experimental/view/shared.hpp>
#include <iostream>
using namespace ranges::views;
using std::vector, boost::hana::_, ranges::concat_view, ranges::experimental::views::shared;
vector<double> sort(vector<double> vec) {
if(size(vec) <= 1) {
return vec;
} else {
auto pivot = vec[size(vec) / 2];
return concat_view(
sort(vec | filter(_ < pivot)),
vec | filter(_ == pivot),
sort(vec | filter(_ > pivot))
);
}
}
int main() {
std::cerr << (sort({30, 20, 50, 40}) | shared | all) << std::endl;
}
https://habr.com/ru/post/482318/#comment_21072122
Царь набрасывает на хабр какое-то крестобустоговно, называя его красивым.
+2
Widget&& var1 = someWidget; // here, “&&” means rvalue reference
auto&& var2 = var1; // here, “&&” does not mean rvalue reference
template<typename T>
void f(std::vector<T>&& param); // here, “&&” means rvalue reference
template<typename T>
void f(T&& param); // here, “&&”does not mean rvalue reference
В мире нет ничего более сложного, запутанного и неадекватно раздутого, чем семантика ссылок и категорий значений в «C++».
Заглянуть в ад одним глазком: https://en.cppreference.com/w/cpp/language/value_category
Впустить Ад в себя: https://eli.thegreenplace.net/2014/perfect-forwarding-and-universal-references-in-c
Поехать кукухой: https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers
0
#include <iostream>
#include <functional>
#include <array>
template<typename F, int... I>
std::array<int, sizeof...(I)> materializeImpl(const F & f, std::integer_sequence<int, I...>)
{
return { (f(), I)... };
}
template<size_t N, typename F, typename I = std::make_integer_sequence<int, N>>
auto materialize(const F & f)
{
return materializeImpl(f, I{});
}
template<size_t N, typename F>
void times(const F & f)
{
(void)materialize<N>([&f]() { f(); return 0; });
}
int main()
{
times<22>([]() { std::cout << "Hello There." << std::endl; });
return EXIT_SUCCESS;
}
Наш инженерный отдел ебанулся на отличненько!
https://wandbox.org/permlink/txNcEa2ZkuG2A1Sj
+3
#include <iostream>
using namespace std;
class lock_guard_ext{
public:
lock_guard_ext() { cout << "lock_guard_ext ctor" << endl; }
~lock_guard_ext() { cout << "lock_guard_ext dtor" << endl; }
};
struct Access {
lock_guard_ext lock;
int & ref_to_value;
};
int & t() {
throw 0;
}
Access foo1() {
return { {}, t() };
}
int main () {
try {
volatile auto a = foo1();
} catch (int) {
}
}
В шланге деструктор вызывается, в gcc не вызывается.
https://wandbox.org/permlink/7sbsqzhbo0o7dOse
0
template<typename T> Histogram<T>& histogram (std::string const& name) {
std::lock_guard<std::mutex> guard(_lock);
auto const it = _registry.find(name);
if (it == _registry.end()) {
LOG_TOPIC("32d85", ERR, Logger::STATISTICS) << "No histogram booked as " << name;
TRI_ASSERT(false);
throw std::exception();
}
std::shared_ptr<Histogram<T>> h = nullptr;
try {
h = std::dynamic_pointer_cast<Histogram<T>>(*it->second);
if (h == nullptr) {
LOG_TOPIC("d2358", ERR, Logger::STATISTICS) << "Failed to retrieve histogram " << name;
}
} catch (std::exception const& e) {
LOG_TOPIC("32d75", ERR, Logger::STATISTICS)
<< "Failed to retrieve histogram " << name << ": " << e.what();
}
if (h == nullptr) {
TRI_ASSERT(false);
}
return *h;
};
+1
Segmentation fault
Я против «неинформативных ошибок».
+2
case Type::Instruction:
{
if (o == "movzwl") return OpCode::movzwl;
if (o == "movzbl") return OpCode::movzbl;
if (o == "shrb") return OpCode::shrb;
if (o == "shrl") return OpCode::shrl;
if (o == "xorl") return OpCode::xorl;
if (o == "andl") return OpCode::andl;
if (o == "ret") return OpCode::ret;
if (o == "movb") return OpCode::movb;
if (o == "cmpb") return OpCode::cmpb;
if (o == "movl") return OpCode::movl;
if (o == "jmp") return OpCode::jmp;
if (o == "testb") return OpCode::testb;
if (o == "incl") return OpCode::incl;
if (o == "sarl") return OpCode::sarl;
if (o == "decl") return OpCode::decl;
if (o == "jne") return OpCode::jne;
if (o == "je") return OpCode::je;
if (o == "js") return OpCode::js;
if (o == "subl") return OpCode::subl;
if (o == "subb") return OpCode::subb;
if (o == "addl") return OpCode::addl;
if (o == "addb") return OpCode::addb;
if (o == "sall") return OpCode::sall;
if (o == "orl") return OpCode::orl;
if (o == "andb") return OpCode::andb;
if (o == "orb") return OpCode::orb;
if (o == "decb") return OpCode::decb;
if (o == "incb") return OpCode::incb;
if (o == "rep") return OpCode::rep;
if (o == "notb") return OpCode::notb;
if (o == "negb") return OpCode::negb;
if (o == "sbbb") return OpCode::sbbb;
if (o == "pushl") return OpCode::pushl;
if (o == "retl") return OpCode::retl;
}
Фрагмент транслятора из ассемблера в ассемблер.
https://github.com/lefticus/x86-to-6502
0
#include <iostream>
using namespace std;
struct Rooster {
int id = 0;
};
void asshole(const Rooster* roosters) {
Rooster* r = (Rooster*)roosters;
for (int i = 0; i < 3; i++) {
r[i].id = i + 1;
}
}
int main() {
Rooster roosters[3];
asshole(roosters);
for (int i = 0; i < 3; i++) {
printf("%d\n", roosters[i].id);
}
return 0;
}
https://ideone.com/Xk9Ukg
Нахуй так жить?
+1
QVariant AtdItem::data(int column, int role) const {
if (role == Qt::DisplayRole || role == Qt::EditRole || role == Qt::ToolTipRole) {
if (column == 0)
return m_name;
if (column == 1)
return m_id;
if (column == 2)
return m_shortName;
if (column == 3)
return m_code;
if (column == 4)
return m_code_alpha_2;
if (column == 5)
return m_capital;
if (column == 6)
return m_type_id;
if (column == 7)
return m_number;
if (column == 8)
return m_dir_id;
if (column == 9)
return m_area;
if (column == 10)
return m_pop;
if (column == 11)
return m_info;
if (column == 12)
return m_reduction_name;
if (column == 13)
return m_scheme_name;
if (column == 14)
return m_num_on_scheme;
if (column == 15)
return m_code_alpha3;
if (column == 16)
return m_code_hasc;
if (column == 17)
return m_level;
}
if (role == Qt::UserRole) {
return m_id;
}
return QVariant();
};
уроки по switch && enum будут после обеда