I hereby claim:
- I am mpark on github.
- I am mpark (https://keybase.io/mpark) on keybase.
- I have a public key ASBfbLv7q9pb1eOovQGcdQL5wvbIPnFwRrkyTs14CJ-HGQo
To claim this, I am signing this object:
#include <iostream> | |
#include <type_traits> | |
#include <utility> | |
namespace mpark { | |
struct Implicit {}; | |
struct Explicit {}; | |
template <typename T> |
#include <iostream> | |
#include <tuple> | |
#include <experimental/tuple> | |
#include <type_traits> | |
#include <utility> | |
// The same limitations apply to std::less if we wanted to figure out the winner | |
// of an overload resolution of `<`. | |
// it's a more general problem than for constructors. |
I hereby claim:
To claim this, I am signing this object:
class Cat; | |
class Dog; | |
class Animal { | |
public: | |
template <typename F> | |
static void visit(const F& f, const Animal& animal) { | |
animal.accept(Visitor<F>(f)); | |
} |
#include <type_traits> | |
namespace std { | |
namespace detail { | |
// A dummy tag type that indicates substitution failure. It should be hidden | |
// as best as possible, in this case it's just under the `detail` namespace. | |
struct fail; |
#!/usr/bin/env python | |
import os | |
import subprocess | |
import tempfile | |
for n in xrange(100, 2001, 100): | |
with tempfile.NamedTemporaryFile(suffix='.cpp') as f: | |
f.write('#include <type_traits>\n') | |
f.write('#include <meta/meta.hpp>\n') |
/** | |
* If we know that the sink argument is movable, | |
* then passing by value costs nothing if an rvalue is passed and | |
* only an extra move if an lvalue is passed. | |
* I agree that the extra move is no big deal here since it should be | |
* a constant time operation in most cases. | |
* | |
* So I like use cases such as: | |
* | |
* class TSink { |