Skip to content

Instantly share code, notes, and snippets.

View ldionne's full-sized avatar

Louis Dionne ldionne

View GitHub Profile
@ldionne
ldionne / moved.md
Last active December 28, 2015 17:59
Comparison between different ways of instantiating the same number of templates.
@ldionne
ldionne / moved.md
Last active December 28, 2015 16:29
Comparison of techniques to implement lookup in compile-time structures.
@ldionne
ldionne / moved.md
Last active December 28, 2015 15:29
Comparison of techniques to implement compile-time logical conjunction and disjunction.
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 / 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
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 / 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 / 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 / GSoC2015.md
Last active August 29, 2015 14:17
Proposition for GSoC 2015 with Boost

Abstract

The goal of this project is to improve the compile-time associative data structures present in the Hana C++14 metaprogramming library. I aim to provide a richer interface than what is currently available and also to improve the compile-time performance of those data structures, while keeping the runtime performance on-par with non-naive hand-written code.

Background information

› ~/code/gcc5/bin/g++ -std=c++1y ~/code/hana/test/worksheet.cpp
/Users/ldionne/code/hana/test/worksheet.cpp: In substitution of ‘template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = std::is_same<T, T>{}(); _Tp = void]’:
/Users/ldionne/code/hana/test/worksheet.cpp:1411:25: required from here
/Users/ldionne/code/hana/test/worksheet.cpp:1408:50: in constexpr expansion of ‘((std::integral_constant<bool, true>*)(& std::is_same<T, T>()))->std::integral_constant<_Tp, __v>::operator()<bool, true>()’
/Users/ldionne/code/hana/test/worksheet.cpp:1411:25: internal compiler error: in cxx_eval_call_expression, at cp/constexpr.c:1358
auto ICE_HERE = __func__;
^
/Users/ldionne/code/hana/test/worksheet.cpp:1411:25: internal compiler error: Abort trap: 6
g++: internal compiler error: Abort trap: 6 (program cc1plus)