+
+template<typename L, typename B0, typename... Args>
+class LoaderFuncNBound1: public LoaderAction
+{
+protected:
+ typedef void (L::*FuncType)(B0, Args...);
+ typedef typename RemoveReference<B0>::Type Bound0Type;
+
+ FuncType func;
+ Bound0Type bound0;
+
+public:
+ LoaderFuncNBound1(FuncType f, const Bound0Type &b0): func(f), bound0(b0) { }
+
+ virtual void execute(Loader &l, const Statement &st) const
+ {
+ Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, st, bound0);
+ }
+
+ virtual void execute(Loader &l, const ArgumentStore &as) const
+ {
+ Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, as, bound0);
+ }
+
+ virtual std::string get_signature() const
+ { return create_signature<Args...>(); }
+};