Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am wilhelmtell on github.
  • I am wilhelmtell (https://keybase.io/wilhelmtell) on keybase.
  • I have a public key whose fingerprint is 8702 6ACC 79E5 235F 11A3 837D D428 19EA D130 1F36

To claim this, I am signing this object:

#include <cmath>
int main() {
auto const cos = [](auto const& exp) { return [&]() { return std::cos(exp()); }; };
auto const sin = [](auto const& exp) { return [&]() { return std::sin(exp()); }; };
auto const term = [](auto const& x) { return [&]() { return x; }; };
auto const eval = [](auto const& exp) { return exp(); };
std::cout << eval(cos(sin(term(0.5 * M_PI)))) << '\n';
}
@wilhelmtell
wilhelmtell / exclusive.cc
Last active August 29, 2015 14:18
Extract responsibility for exclusivity in a RAII class?
#include <utility>
#include <iostream>
struct exclusive {
exclusive() : o{true} { std::cout << this << " exclusive init\n"; }
~exclusive() {
if(owning())
std::cout << this << " exclusive cleanup\n";
else
std::cout << this << " exclusive no cleanup\n";
I don't find this "cache end()" guideline of LLVM right: http://llvm.org/docs/CodingStandards.html#don-t-evaluate-end-every-time-through-a-loop It's a case of premature optimization, and it actually leaves room for error because the new identifier is a non-const lvalue.
@wilhelmtell
wilhelmtell / gist:845950
Created February 27, 2011 06:02
n_iterator
#include <iterator>
#include <iostream>
#include <vector>
#include <algorithm>
template<class I, class S>
struct n_iterator : public std::iterator_traits<I> {
n_iterator();
n_iterator(I iter, S n);
try {
std::vector<int> v;
// gtfo of try, so we only catch the ctor's error
} catch (const std::bad_alloc& e) {
// ...
}
// damn it, so now v's out of scope!
#!/bin/bash
# git read eval print loop
P='git> ';
echo -e -n "$P";
while read L; do
if [ "$L" = "quit" -o "$L" = q ]; then
break;
fi;
git "$L";
namespace System {
class Exception<T> : Exception {
public Exception() { }
public Exception(string message) : base(message) { }
public Exception(string message, Exception inner)
: base(message, inner){ }
}
}
namespace App {
from_dot()
{
[ $# -gt 0 ] && local FROM="$@";
sed '/[{}]/d; s/^\s*\|\s*\[[^]]*\]\s*\|\s*;\s*$//g; s/\s/_/g; s/\s*->\s*/ /' $FROM;
}
from_dot graph.dot |tsort #|tac
#include <iostream>
using namespace std;
union ufloat {
float f;
char b[sizeof(float)];
};
int main(int argc, char* argv[])