Skip to content

Instantly share code, notes, and snippets.

@IMelker
IMelker / hidden_friend_idiom.cpp
Created July 13, 2020 11:28
Hidden friend idiom
namespace N {
class MyType {
Mytype& operator+=(const MyType&);
void print(std::ostream&);
void swap(MyType&) noexcept;
friend MyType operator+(MyType a, const MyType& b) {
a += b;
return a;
}
@IMelker
IMelker / ScopePrinter.cpp
Last active April 14, 2020 10:00
ScopePrinter to exchange printf and make it multithread
#include<string>
#include<iostream>
class ScopePrinter {
public:
template<typename STR>
explicit ScopePrinter(STR&& init, std::ostream& stream = std::cout)
: stream(stream),
msg(std::forward<STR>(init)) {
msg.append(":\t");
@IMelker
IMelker / Nearest upper power of two [cpp]
Last active September 30, 2019 14:55
Get nearest upper power of two to current number
long NUP2(long x) {
x--;
for (int p=1; p<32; p<<=1) x |= (x >> p);
return ++x;
}
@IMelker
IMelker / RandomWrapper class [cpp]
Last active August 20, 2019 09:17
RandomWrapper
#include <random>
template<typename T>
class RandomWrapper
{
public:
RandomWrapper() : data(dist(rng)) {
}
operator T() { return data; }
@IMelker
IMelker / code_format.sh [recursive clang-format]
Last active July 26, 2019 08:45
clang-format wrapper for multifile ussage [cpp]
#!/bin/bash
# ------------------------------------------------------------
# Recursive cpp code formatter based on clang-format
# For base work there is you need to have .clang-format file
#
# USAGE code_format.sh [clang-format-options] [<file|dir> ...]
#
# clang-format-options passes through to clang-format
# ------------------------------------------------------------
@IMelker
IMelker / VMBox Centos 7 prepare for install VirtualBox Guest Additions [prepare.sh]
Last active June 15, 2019 14:31
Centos7 VirtualBox Guest Additions installation
#!/bin/bash
# ------------------------------------------------------------
# Centos7 VirtualBox Guest Additions installation
# Update kernel headers and install requirements for it
#
# USAGE sudo prepare.sh
#
# sudo requires for installation, export KERNEL_DIR and reboot
# ------------------------------------------------------------