This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
#include <chrono> | |
#include <cinttypes> | |
#include <ctime> | |
struct YMD | |
{ | |
int y{}; | |
unsigned m{}; | |
unsigned d{}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string> | |
#include <fmt/format.h> | |
#include <fmt/printf.h> | |
namespace details | |
{ | |
#define ERROR_MESSAGES(X) \ | |
X(DivByZero) \ | |
X(NumOverflow) \ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// (C) eric niebler | |
#include <type_traits> | |
#define CAT_(X, ...) X ## __VA_ARGS__ | |
#define CAT(X, ...) CAT_(X, __VA_ARGS__) | |
#define RETURN(...) return_t<__VA_ARGS__, std::enable_if_t<RETURN_ | |
#define RETURN_(...) CAT(RETURN_, __VA_ARGS__)>> | |
#define RETURN_requires |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// fine for string_view or const char*. todo: use std::forward | |
// from Marco Magdy | |
template<typename.. Args> | |
auto strcat(Args... args) | |
{ | |
const auto total = (... + args.size()); | |
std::string s; | |
s.reserve(total); | |
(s += ... += args); | |
return s; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template <typename InputIt, typename OutputIt> | |
OutputIt | |
radix_sort_split(InputIt first, InputIt last, OutputIt output, std::uint64_t bit) | |
{ | |
std::vector<std::uint64_t> e(std::distance(first, last)); | |
// Count 0s. | |
std::transform(first, last, e.begin(), | |
[=] (auto t) { return !(t & (1 << bit)); }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template <typename InputIt, typename OutputIt, typename BinaryOp, typename T, typename Size> | |
unique_future<OutputIt> | |
async_inclusive_scan(InputIt first, InputIt last, OutputIt output,BinaryOp op, T init, Size chunk_size) | |
{ | |
Size const elements = std::distance(first, last); | |
Size const chunks = (1 + ((elements - 1) / chunk_size)); // Round up. | |
std::vector<unique_future<T>> sweep; | |
sweep.reserve(chunks); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// From Andrei Alexandrescu talk | |
// https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920/ | |
// Apache License | |
// Version 2.0, January 2004 | |
** | |
* Returns the number of digits in the base 10 representation of an | |
* uint64_t. Useful for preallocating buffers and such. It's also used | |
* internally, see below. Measurements suggest that defining a | |
* separate overload for 32-bit integers is not worthwhile. | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdlib> | |
// Andrei Alexandrescu at the C++ and Beyond 2012 | |
class atoi_func | |
{ | |
public: | |
atoi_func(): value_() {} | |
inline int value() const { return value_; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
git remote prune origin | |
git branch -r --merged master | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template<class T> | |
auto serialize_imp(std::ostream& os, T const& obj, int) | |
-> decltype(os << obj, void()) | |
{ | |
os << obj; | |
} | |
template<class T> | |
auto serialize_imp(std::ostream& os, T const& obj, long) | |
-> decltype(obj.stream(os), void()) |