+
+# https://stackoverflow.com/a/14803335
+snippet bind_memfun
+template<typename Ret, typename T, typename... Args>
+std::function<Ret(Args...)> ${1:object_bind}(Ret (T::* fun)(Args...), T &t)
+{
+ return [=](Args... args) { return (t.*fun)(args...); };
+}
+endsnippet
+
+snippet once "#pragma once" b
+#pragma once
+
+${0}
+endsnippet
+
+snippet ostream "operator<<(ostream)" b
+inline std::ostream & operator<<(std::ostream &os, ${1:Type} const & rhs)
+{
+ os << ${0};
+ return os;
+}
+endsnippet