Skip to content

Instantly share code, notes, and snippets.

View Nekrolm's full-sized avatar

Dmitry Sviridkin Nekrolm

View GitHub Profile
#include <type_traits>
#include <utility>
#include <cstddef>
#include <iostream>
template <class T>
class WeakPtr;
template <class T>
@Nekrolm
Nekrolm / lens.cpp
Last active August 6, 2019 15:04
FP Lenses simple implementation (C++17)
#include <functional>
#include <iostream>
template<class ObjT, class ValueT>
using setter_t = std::function<ObjT(ObjT, ValueT)>;
template<class ObjT, class ValueT>
using getter_t = std::function<ValueT(ObjT)>;
template <class ObjT, class ValueT>
//https://godbolt.org/z/tctouH
#include <iostream>
#include <random>
#include <functional>
#include <exception>
#include <cstring>
#include <chrono>
using namespace std;
@Nekrolm
Nekrolm / enumerate.h
Created June 26, 2019 13:07
Python-style enumerator for C++
#pragma once
#include <type_traits>
#include <utility>
#include <cstddef>
#include <algorithm>
#include <typeinfo>
#include <iterator>
template<class Range>
@Nekrolm
Nekrolm / cfft.cpp
Created April 21, 2019 17:38
compile-time fast fourier transform
#include <iostream>
#include <complex>
#include <cmath>
#include <utility>
#include <chrono>
#include <array>
// std::complex<T>::operators -- not constexpr in C++17
template <class T>
@Nekrolm
Nekrolm / fizzbuzz.cpp
Last active April 3, 2019 20:44
FizzBuzz on variadic templates & recursion
#include <iostream>
#include <utility>
namespace impl{
template <int N, int D, int R>
constexpr auto FizzBuzz = "";
template <int N>
constexpr auto FizzBuzz<N, 15, 0> = "fizzbuzz";