X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Floader.h;h=7799a7eacb5dd404915f25cbfe87f0665f515436;hb=b0186e8878204a29e25ca4063c1dac4dea908508;hp=de0b32deaaa06f4aae771ff64644a68cfdfe4d11;hpb=a887b3f7518605c22e4b70eeb9fe136acb2ea632;p=libs%2Fdatafile.git diff --git a/source/loader.h b/source/loader.h index de0b32d..7799a7e 100644 --- a/source/loader.h +++ b/source/loader.h @@ -97,6 +97,12 @@ protected: void add(const std::string &k, void (L::*func)(A0)) { add(k, new LoaderFunc1(func)); } +#if __cplusplus>=201103L + template + void add(const std::string &k, void (L::*func)(Args...)) + { add(k, new LoaderFuncN(func)); } + +#else template void add(const std::string &k, void (L::*func)(A0, A1)) { add(k, new LoaderFunc2(func)); } @@ -112,6 +118,15 @@ protected: template void add(const std::string &k, void (L::*func)(A0, A1, A2, A3, A4)) { add(k, new LoaderFunc5(func)); } +#endif + +#if __cplusplus>=201103L + /** Adds a keyword that is loaded by calling a function with a bound + first argument. */ + template + void add(const std::string &k, void (L::*func)(B0, Args...), const typename RemoveReference::Type &b0) + { add(k, new LoaderFuncNBound1(func, b0)); } +#endif /** Adds a keyword that is loaded into a member of the loaded object. */ template