diff --git a/include/Nazara/Lua/LuaClass.inl b/include/Nazara/Lua/LuaClass.inl index b49dd5dcc..7d5f179c7 100644 --- a/include/Nazara/Lua/LuaClass.inl +++ b/include/Nazara/Lua/LuaClass.inl @@ -174,7 +174,7 @@ namespace Nz { m_methods[name] = method; } - + template template std::enable_if_t::value> LuaClass::SetMethod(const String& name, R(P::*func)(Args...), DefArgs... defArgs) @@ -194,7 +194,7 @@ namespace Nz { SetMethod(name, [func, defArgs...] (LuaInstance& instance, T& object) -> int { - LuaImplMethodProxy::Impl handler(instance, object, defArgs...); + typename LuaImplMethodProxy::template Impl handler(instance, object, defArgs...); handler.ProcessArgs(); return handler.Invoke(func); @@ -225,7 +225,7 @@ namespace Nz { SetStaticMethod(name, [func, defArgs...] (LuaInstance& instance) -> int { - LuaImplFunctionProxy::Impl handler(instance); + typename LuaImplFunctionProxy::template Impl handler(instance); handler.ProcessArgs(); return handler.Invoke(func); diff --git a/include/Nazara/Lua/LuaInstance.inl b/include/Nazara/Lua/LuaInstance.inl index d44a3cab6..1fa6343c7 100644 --- a/include/Nazara/Lua/LuaInstance.inl +++ b/include/Nazara/Lua/LuaInstance.inl @@ -196,21 +196,21 @@ namespace Nz return retVal; } - template + template struct LuaImplArgProcesser; template<> - struct LuaImplArgProcesser + struct LuaImplArgProcesser { template static void Process(LuaInstance& instance, ArgContainer& args, DefArgContainer& defArgs) { - std::get(args) = std::move(LuaImplQueryArg(instance, N + 1, std::get(defArgs), TypeTag())); + std::get(args) = std::move(LuaImplQueryArg(instance, N + 1, std::get() - N + FirstDefArg - 1>(defArgs), TypeTag())); } }; template<> - struct LuaImplArgProcesser + struct LuaImplArgProcesser { template static void Process(LuaInstance& instance, ArgContainer& args, DefArgContainer& defArgs) @@ -272,8 +272,7 @@ namespace Nz template void ProcessArgs() { - using CheckDefValue = typename std::integral_constant= FirstDefArg>; - LuaImplArgProcesser::Process(m_instance, m_args, m_defaultArgs); + LuaImplArgProcesser<(N >= FirstDefArg)>::template Process(m_instance, m_args, m_defaultArgs); } template @@ -355,8 +354,7 @@ namespace Nz template void ProcessArgs() { - using CheckDefValue = typename std::integral_constant= FirstDefArg>; - LuaImplArgProcesser::Process(m_instance, m_args, m_defaultArgs); + LuaImplArgProcesser<(N >= FirstDefArg)>::template Process(m_instance, m_args, m_defaultArgs); } template @@ -396,7 +394,7 @@ namespace Nz { PushFunction([func, defArgs...](LuaInstance& instance) -> int { - LuaImplFunctionProxy::Impl handler(instance); + typename LuaImplFunctionProxy::template Impl handler(instance, defArgs...); handler.ProcessArgs(); return handler.Invoke(func);