Skip to content

Instantly share code, notes, and snippets.

View ldionne's full-sized avatar

Louis Dionne ldionne

View GitHub Profile
@ldionne
ldionne / jump_table.cpp
Created May 13, 2015 02:21
implementation of a function pointer table
// Copyright Louis Dionne 2015
// Distributed under the Boost Software License, Version 1.0.
#include <boost/hana.hpp>
#include <array>
using namespace boost::hana;
template <typename T>
void visit(T t) { }
@ldionne
ldionne / src_exception.patch
Created June 2, 2015 21:16
Patch for src/exception.cpp in libc++
diff --git a/src/exception.cpp b/src/exception.cpp
index a13a0b9..2c16060 100644
--- a/src/exception.cpp
+++ b/src/exception.cpp
@@ -105,9 +105,9 @@ terminate() _NOEXCEPT
#endif // !__EMSCRIPTEN__
#endif // !defined(LIBCXXRT) && !defined(_LIBCPPABI_VERSION)
+#if !defined(LIBCXXRT) && !defined(__GLIBCXX__) && !defined(__EMSCRIPTEN__)
bool uncaught_exception() _NOEXCEPT { return uncaught_exceptions() > 0; }
@ldionne
ldionne / bloat.erb.json
Last active August 29, 2015 14:22
Various implementations of degenerate use case presented at http://thread.gmane.org/gmane.comp.lib.boost.devel/260913/focus=261035
<%
hana_tuple = (1..200).step(10)
hana_map = (1..50).step(10).to_a
mpl = hana_tuple
%>
{
"title": {
"text": "Executable size"
@ldionne
ldionne / main.cpp
Last active August 29, 2015 14:23
Making Tick's IntegralConstant a Constant for Hana
#include <boost/hana.hpp>
#include <tick/integral_constant.h>
namespace hana = boost::hana;
template <typename T>
struct TickIntegralConstant { using value_type = T; };
namespace boost { namespace hana {
template <typename T, T n>
ldionne in ~/Desktop/ellcc-tests % ./ellcc/bin/ecc++ -v -target arm-none-eabi -isystem ${PWD}/ellcc/libecc/include/c++ -isystem ${PWD}/ellcc/libecc/include/arm main.cpp
ecc 0.1.17 based on clang version 3.8.0 (trunk) (based on LLVM 3.8.0svn)
Target: arm-none--eabi
Thread model: posix
InstalledDir: /Users/ldionne/Desktop/ellcc-tests/./ellcc/bin
"/Users/ldionne/Desktop/ellcc-tests/ellcc/bin/ecc" -cc1 -triple armv4t-none--eabi -emit-obj -mrelax-all -disable-free -main-file-name main.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu arm7tdmi -target-feature +soft-float-abi -target-feature +strict-align -target-abi aapcs -mfloat-abi soft -target-linker-version 253.3.3 -v -dwarf-column-info -resource-dir /Users/ldionne/Desktop/ellcc-tests/ellcc/bin/../libecc -isystem /Users/ldionne/Desktop/ellcc-tests/ellcc/libecc/include/c++ -isystem /Users/ldionne/Desktop/ellcc-tests/ellcc/libecc/include/arm -fdeprecated-macro -fdebug-compilation-dir
@ldionne
ldionne / static_map.cpp
Last active August 8, 2023 10:17
Toy implementation of a static constexpr map
#include <algorithm>
#include <array>
#include <cassert>
#include <experimental/string_view>
#include <functional>
#include <initializer_list>
#include <iterator>
#include <utility>
@ldionne
ldionne / lazy_and.cpp
Last active January 18, 2016 23:21
Implementation of a lazy conjunction based on SFINAE (see DR 1227: http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1227)
// Note: This original idea was shown to me by Eric Fiselier. All credits where due.
#include <type_traits>
template <typename Condition, typename T = void>
struct enable_if
: std::enable_if<Condition::value, T>
{ };
@ldionne
ldionne / anonymous.erb.cpp
Created February 7, 2016 18:35
Benchmark of different compile-time string representations
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
template <char ...s>
static auto string_maker = [] {
struct local { char data[sizeof...(s)] = {s...}; };
return local{};
};
@ldionne
ldionne / metabench-index.html
Created April 20, 2016 16:12
Copy of Metabench's index.html file, as generated on GitHub Pages
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Metabench</title>
@ldionne
ldionne / .gitignore
Last active April 20, 2016 21:32
Benchmarking the compile-time of multi-visitation on variants
build/