#ifndef MSP_DATAFILE_LOADER_H_
#define MSP_DATAFILE_LOADER_H_
+#include <type_traits>
#include <map>
#include <msp/io/file.h>
#include "loaderaction.h"
/** Adds a keyword that is loaded by calling a function with a bound
first argument. */
template<typename L, typename B0, typename... Args>
- void add(const std::string &k, void (L::*func)(B0, Args...), const typename RemoveReference<B0>::Type &b0)
+ void add(const std::string &k, void (L::*func)(B0, Args...), const typename std::remove_reference<B0>::type &b0)
{ add(k, new LoaderFuncNBound1<L, B0, Args...>(func, b0)); }
/** Adds a keyword that is loaded into a member of the loaded object. */
public Loader class. Any extra arguments are passed to the Loader constructor.
*/
template<typename T, typename C, typename... Args>
-typename EnableIf<NeedsCollection<typename T::Loader>::value, void>::No load(T &obj, C &coll, const std::string &fn, Args &... args)
+typename std::enable_if<!NeedsCollection<typename T::Loader>::value>::type load(T &obj, C &coll, const std::string &fn, Args &... args)
{
RefPtr<IO::Seekable> in = coll.open_raw(fn);
if(!in)