mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 16:14:38 +00:00
slightly better organization, but same compiling problem
This commit is contained in:
parent
26da831b01
commit
35cc16d22c
1 changed files with 12 additions and 13 deletions
|
|
@ -91,10 +91,7 @@ struct _EngineFunctionDefaultArguments {};
|
||||||
template<typename ...ArgTs>
|
template<typename ...ArgTs>
|
||||||
struct _EngineFunctionDefaultArguments< void(ArgTs...) > : public EngineFunctionDefaultArguments
|
struct _EngineFunctionDefaultArguments< void(ArgTs...) > : public EngineFunctionDefaultArguments
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
template<typename T> using DefVST = typename EngineTypeTraits<T>::DefaultArgumentValueStoreType;
|
template<typename T> using DefVST = typename EngineTypeTraits<T>::DefaultArgumentValueStoreType;
|
||||||
|
|
||||||
std::tuple<DefVST<ArgTs> ...> mArgs;
|
std::tuple<DefVST<ArgTs> ...> mArgs;
|
||||||
private:
|
private:
|
||||||
using SelfType = _EngineFunctionDefaultArguments< void(ArgTs...) >;
|
using SelfType = _EngineFunctionDefaultArguments< void(ArgTs...) >;
|
||||||
|
|
@ -105,22 +102,24 @@ private:
|
||||||
template<size_t ...I> struct Gens<0, I...>{ typedef Seq<I...> type; };
|
template<size_t ...I> struct Gens<0, I...>{ typedef Seq<I...> type; };
|
||||||
|
|
||||||
template<typename ...TailTs, size_t ...I>
|
template<typename ...TailTs, size_t ...I>
|
||||||
void copyHelper(std::tuple<DefVST<TailTs> ...> defaultArgs, Seq<I...>) {
|
static void copyHelper(std::tuple<DefVST<ArgTs> ...> &args, std::tuple<DefVST<TailTs> ...> &defaultArgs, Seq<I...>) {
|
||||||
constexpr size_t offset = (sizeof...(ArgTs) - sizeof...(TailTs));
|
constexpr size_t offset = (sizeof...(ArgTs) - sizeof...(TailTs));
|
||||||
std::tie(std::get<I + offset>(mArgs)...) = defaultArgs;
|
std::tie(std::get<I + offset>(args)...) = defaultArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename ...TailTs> using MaybeVoidEnabled = typename std::enable_if<sizeof...(TailTs) <= sizeof...(ArgTs), void>::type;
|
template<typename ...TailTs> using MaybeSelfEnabled = typename std::enable_if<sizeof...(TailTs) <= sizeof...(ArgTs), decltype(mArgs)>::type;
|
||||||
|
|
||||||
template<typename ...TailTs> MaybeVoidEnabled<TailTs...> tailInit(DefVST<TailTs> ...tail) {
|
template<typename ...TailTs> static MaybeSelfEnabled<TailTs...> tailInit(DefVST<TailTs> ...tail) {
|
||||||
mNumDefaultArgs = sizeof...(TailTs);
|
std::tuple<ArgTs...> argsT;
|
||||||
copyHelper(std::make_tuple(tail...), typename Gens<sizeof...(TailTs)>::type());
|
std::tuple<TailTs...> tailT = std::make_tuple(tail...);
|
||||||
|
SelfType::copyHelper(argsT, tailT, typename Gens<sizeof...(TailTs)>::type());
|
||||||
|
return argsT;
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<typename ...TailTs> _EngineFunctionDefaultArguments(DefVST<TailTs> ...tail)
|
template<typename ...TailTs> _EngineFunctionDefaultArguments(DefVST<TailTs> ...tail)
|
||||||
{
|
: EngineFunctionDefaultArguments({sizeof...(TailTs)}), mArgs(tailInit(tail...))
|
||||||
tailInit(tail...);
|
{}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack( pop )
|
#pragma pack( pop )
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue