Add beast_basics and remove unused modules from build

This commit is contained in:
Vinnie Falco
2013-06-17 09:31:21 -07:00
parent 5a28c54505
commit 6d961d87f8
6 changed files with 59 additions and 74 deletions

View File

@@ -86,7 +86,6 @@
<ClInclude Include="..\..\modules\beast_basics\threads\beast_GlobalThreadGroup.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_InterruptibleThread.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_Listeners.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_MessageThread.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_ParallelFor.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_ReadWriteMutex.h" />
<ClInclude Include="..\..\modules\beast_basics\threads\beast_Semaphore.h" />
@@ -295,10 +294,6 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\modules\beast_basics\threads\beast_MessageThread.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\modules\beast_basics\threads\beast_ParallelFor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>

View File

@@ -596,9 +596,6 @@
<ClInclude Include="..\..\modules\beast_basics\threads\beast_Listeners.h">
<Filter>beast_basics\threads</Filter>
</ClInclude>
<ClInclude Include="..\..\modules\beast_basics\threads\beast_MessageThread.h">
<Filter>beast_basics\threads</Filter>
</ClInclude>
<ClInclude Include="..\..\modules\beast_basics\threads\beast_ParallelFor.h">
<Filter>beast_basics\threads</Filter>
</ClInclude>
@@ -937,9 +934,6 @@
<ClCompile Include="..\..\modules\beast_basics\threads\beast_Listeners.cpp">
<Filter>beast_basics\threads</Filter>
</ClCompile>
<ClCompile Include="..\..\modules\beast_basics\threads\beast_MessageThread.cpp">
<Filter>beast_basics\threads</Filter>
</ClCompile>
<ClCompile Include="..\..\modules\beast_basics\threads\beast_ParallelFor.cpp">
<Filter>beast_basics\threads</Filter>
</ClCompile>

View File

@@ -29,8 +29,6 @@ namespace Murmur
#if BEAST_MSVC
#define FORCE_INLINE __forceinline
#define ROTL32(x,y) _rotl(x,y)
#define ROTL64(x,y) _rotl64(x,y)
@@ -40,8 +38,6 @@ namespace Murmur
#else
#define FORCE_INLINE __attribute__((always_inline))
static inline uint32_t rotl32 ( uint32_t x, int8_t r )
{
return (x << r) | (x >> (32 - r));
@@ -63,12 +59,12 @@ static inline uint64_t rotl64 ( uint64_t x, int8_t r )
// Block read - if your platform needs to do endian-swapping or can only
// handle aligned reads, do the conversion here
static FORCE_INLINE uint32_t getblock ( const uint32_t* p, int i )
static forcedinline uint32_t getblock ( const uint32_t* p, int i )
{
return p[i];
}
static FORCE_INLINE uint64_t getblock ( const uint64_t* p, int i )
static forcedinline uint64_t getblock ( const uint64_t* p, int i )
{
return p[i];
}
@@ -76,7 +72,7 @@ static FORCE_INLINE uint64_t getblock ( const uint64_t* p, int i )
//-----------------------------------------------------------------------------
// Finalization mix - force all bits of a hash block to avalanche
static FORCE_INLINE uint32_t fmix ( uint32_t h )
static forcedinline uint32_t fmix ( uint32_t h )
{
h ^= h >> 16;
h *= 0x85ebca6b;
@@ -89,7 +85,7 @@ static FORCE_INLINE uint32_t fmix ( uint32_t h )
//----------
static FORCE_INLINE uint64_t fmix ( uint64_t k )
static forcedinline uint64_t fmix ( uint64_t k )
{
k ^= k >> 33;
k *= BIG_CONSTANT (0xff51afd7ed558ccd);

View File

@@ -17,7 +17,7 @@
*/
//==============================================================================
#pragma message(BEAST_LOC_"Missing platform-specific implementation")
//#pragma message(BEAST_LOC_"Missing platform-specific implementation")
FPUFlags FPUFlags::getCurrent ()
{

View File

@@ -475,7 +475,7 @@ public:
template <class Mf>
inline void call (Mf mf)
{
callf (vf::bind (mf, vf::_1));
callf (bind (mf, _1));
}
#endif
@@ -483,7 +483,7 @@ public:
template <class Mf, class T1>
void call (Mf mf, T1 t1)
{
callf (vf::bind (mf, vf::_1, t1));
callf (bind (mf, _1, t1));
}
#endif
@@ -491,7 +491,7 @@ public:
template <class Mf, class T1, class T2>
void call (Mf mf, T1 t1, T2 t2)
{
callf (vf::bind (mf, vf::_1, t1, t2));
callf (bind (mf, _1, t1, t2));
}
#endif
@@ -499,7 +499,7 @@ public:
template <class Mf, class T1, class T2, class T3>
void call (Mf mf, T1 t1, T2 t2, T3 t3)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3));
callf (bind (mf, _1, t1, t2, t3));
}
#endif
@@ -507,7 +507,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4>
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3, t4));
callf (bind (mf, _1, t1, t2, t3, t4));
}
#endif
@@ -515,7 +515,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5>
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5));
callf (bind (mf, _1, t1, t2, t3, t4, t5));
}
#endif
@@ -523,7 +523,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6));
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6));
}
#endif
@@ -531,7 +531,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7));
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
}
#endif
@@ -539,7 +539,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
callf (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7, t8));
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
}
#endif
/** @} */
@@ -557,7 +557,7 @@ public:
template <class Mf>
inline void queue (Mf mf)
{
queuef (vf::bind (mf, vf::_1));
queuef (bind (mf, _1));
}
#endif
@@ -565,7 +565,7 @@ public:
template <class Mf, class T1>
void queue (Mf mf, T1 t1)
{
queuef (vf::bind (mf, vf::_1, t1));
queuef (bind (mf, _1, t1));
}
#endif
@@ -573,7 +573,7 @@ public:
template <class Mf, class T1, class T2>
void queue (Mf mf, T1 t1, T2 t2)
{
queuef (vf::bind (mf, vf::_1, t1, t2));
queuef (bind (mf, _1, t1, t2));
}
#endif
@@ -581,7 +581,7 @@ public:
template <class Mf, class T1, class T2, class T3>
void queue (Mf mf, T1 t1, T2 t2, T3 t3)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3));
queuef (bind (mf, _1, t1, t2, t3));
}
#endif
@@ -589,7 +589,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4>
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3, t4));
queuef (bind (mf, _1, t1, t2, t3, t4));
}
#endif
@@ -597,7 +597,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5>
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5));
queuef (bind (mf, _1, t1, t2, t3, t4, t5));
}
#endif
@@ -605,7 +605,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6));
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6));
}
#endif
@@ -613,7 +613,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7));
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
}
#endif
@@ -621,7 +621,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
queuef (vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7, t8));
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
}
#endif
/** @} */
@@ -645,7 +645,7 @@ public:
template <class Mf>
inline void update (Mf mf)
{
updatef (mf, vf::bind (mf, vf::_1));
updatef (mf, bind (mf, _1));
}
#endif
@@ -653,7 +653,7 @@ public:
template <class Mf, class T1>
void update (Mf mf, T1 t1)
{
updatef (mf, vf::bind (mf, vf::_1, t1));
updatef (mf, bind (mf, _1, t1));
}
#endif
@@ -661,7 +661,7 @@ public:
template <class Mf, class T1, class T2>
void update (Mf mf, T1 t1, T2 t2)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2));
updatef (mf, bind (mf, _1, t1, t2));
}
#endif
@@ -669,7 +669,7 @@ public:
template <class Mf, class T1, class T2, class T3>
void update (Mf mf, T1 t1, T2 t2, T3 t3)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3));
updatef (mf, bind (mf, _1, t1, t2, t3));
}
#endif
@@ -677,7 +677,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4>
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3, t4));
updatef (mf, bind (mf, _1, t1, t2, t3, t4));
}
#endif
@@ -685,7 +685,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5>
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5));
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5));
}
#endif
@@ -693,7 +693,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6));
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6));
}
#endif
@@ -701,7 +701,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7));
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
}
#endif
@@ -709,7 +709,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
updatef (mf, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7, t8));
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
}
#endif
/** @} */
@@ -730,7 +730,7 @@ public:
template <class Mf>
inline void call1 (ListenerClass* const listener, Mf mf)
{
call1f (listener, vf::bind (mf, vf::_1));
call1f (listener, bind (mf, _1));
}
#endif
@@ -738,7 +738,7 @@ public:
template <class Mf, class T1>
void call1 (ListenerClass* const listener, Mf mf, T1 t1)
{
call1f (listener, vf::bind (mf, vf::_1, t1));
call1f (listener, bind (mf, _1, t1));
}
#endif
@@ -746,7 +746,7 @@ public:
template <class Mf, class T1, class T2>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2));
call1f (listener, bind (mf, _1, t1, t2));
}
#endif
@@ -754,7 +754,7 @@ public:
template <class Mf, class T1, class T2, class T3>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3));
call1f (listener, bind (mf, _1, t1, t2, t3));
}
#endif
@@ -762,7 +762,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4));
call1f (listener, bind (mf, _1, t1, t2, t3, t4));
}
#endif
@@ -770,7 +770,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5));
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5));
}
#endif
@@ -778,7 +778,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6));
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6));
}
#endif
@@ -786,7 +786,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7));
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
}
#endif
@@ -794,7 +794,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
call1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7, t8));
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
}
#endif
/** @} */
@@ -813,7 +813,7 @@ public:
template <class Mf>
inline void queue1 (ListenerClass* const listener, Mf mf)
{
queue1f (listener, vf::bind (mf, vf::_1));
queue1f (listener, bind (mf, _1));
}
#endif
@@ -821,7 +821,7 @@ public:
template <class Mf, class T1>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1)
{
queue1f (listener, vf::bind (mf, vf::_1, t1));
queue1f (listener, bind (mf, _1, t1));
}
#endif
@@ -829,7 +829,7 @@ public:
template <class Mf, class T1, class T2>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2));
queue1f (listener, bind (mf, _1, t1, t2));
}
#endif
@@ -837,7 +837,7 @@ public:
template <class Mf, class T1, class T2, class T3>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3));
queue1f (listener, bind (mf, _1, t1, t2, t3));
}
#endif
@@ -845,7 +845,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4));
queue1f (listener, bind (mf, _1, t1, t2, t3, t4));
}
#endif
@@ -853,7 +853,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5));
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5));
}
#endif
@@ -861,7 +861,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6));
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6));
}
#endif
@@ -869,7 +869,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7));
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
}
#endif
@@ -877,7 +877,7 @@ public:
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
queue1f (listener, vf::bind (mf, vf::_1, t1, t2, t3, t4, t5, t6, t7, t8));
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
}
#endif
/** @} */

View File

@@ -98,7 +98,7 @@ public:
template <class Fn>
void loop (int n, Fn f)
{
loopf (n, vf::bind (f, vf::_1));
loopf (n, bind (f, _1));
}
#endif
@@ -106,7 +106,7 @@ public:
template <class Fn, class T1>
void loop (int n, Fn f, T1 t1)
{
loopf (n, vf::bind (f, t1, vf::_1));
loopf (n, bind (f, t1, _1));
}
#endif
@@ -114,7 +114,7 @@ public:
template <class Fn, class T1, class T2>
void loop (int n, Fn f, T1 t1, T2 t2)
{
loopf (n, vf::bind (f, t1, t2, vf::_1));
loopf (n, bind (f, t1, t2, _1));
}
#endif
@@ -122,7 +122,7 @@ public:
template <class Fn, class T1, class T2, class T3>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3)
{
loopf (n, vf::bind (f, t1, t2, t3, vf::_1));
loopf (n, bind (f, t1, t2, t3, _1));
}
#endif
@@ -130,7 +130,7 @@ public:
template <class Fn, class T1, class T2, class T3, class T4>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
{
loopf (n, vf::bind (f, t1, t2, t3, t4, vf::_1));
loopf (n, bind (f, t1, t2, t3, t4, _1));
}
#endif
@@ -138,7 +138,7 @@ public:
template <class Fn, class T1, class T2, class T3, class T4, class T5>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
{
loopf (n, vf::bind (f, t1, t2, t3, t4, t5, vf::_1));
loopf (n, bind (f, t1, t2, t3, t4, t5, _1));
}
#endif
@@ -146,7 +146,7 @@ public:
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
{
loopf (n, vf::bind (f, t1, t2, t3, t4, t5, t6, vf::_1));
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, _1));
}
#endif
@@ -154,7 +154,7 @@ public:
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
{
loopf (n, vf::bind (f, t1, t2, t3, t4, t5, t6, t7, vf::_1));
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, t7, _1));
}
#endif
@@ -162,7 +162,7 @@ public:
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
{
loopf (n, vf::bind (f, t1, t2, t3, t4, t5, t6, t7, t8, vf::_1));
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, t7, t8, _1));
}
#endif
/** @} */