Fix template. I'm not sure it's really any less ugly, but at least it's more descriptive, sort of.
This commit is contained in:
@@ -47,7 +47,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename U>
|
template<typename U>
|
||||||
void Assign( ModsLevel level, U T::*member, const U &val )
|
inline void Assign( ModsLevel level, U T::*member, const U &val )
|
||||||
{
|
{
|
||||||
if( level != ModsLevel_Song )
|
if( level != ModsLevel_Song )
|
||||||
m_Current.*member = val;
|
m_Current.*member = val;
|
||||||
@@ -55,10 +55,10 @@ public:
|
|||||||
m_[level].*member = val;
|
m_[level].*member = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX U T::*member doesn't work, U T::*member[] doesn't work, U (T::*member)[] doesn't work. What is V?
|
template<typename U, int n>
|
||||||
template<typename U, typename V>
|
inline void Assign_n( ModsLevel level, U (T::*member)[n], size_t index, const U &val )
|
||||||
void Assign_n( ModsLevel level, V member, size_t index, const U &val )
|
|
||||||
{
|
{
|
||||||
|
DEBUG_ASSERT( index < n );
|
||||||
if( level != ModsLevel_Song )
|
if( level != ModsLevel_Song )
|
||||||
(m_Current.*member)[index] = val;
|
(m_Current.*member)[index] = val;
|
||||||
for( ; level < NUM_ModsLevel; enum_add(level, 1) )
|
for( ; level < NUM_ModsLevel; enum_add(level, 1) )
|
||||||
|
|||||||
Reference in New Issue
Block a user