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:
Steve Checkoway
2007-01-20 09:06:05 +00:00
parent 7b3d6b2465
commit 7a296e8bc8
+4 -4
View File
@@ -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) )