namespace {
template<unsigned N>
-inline UInt32 func(UInt32, UInt32, UInt32);
+UInt32 func(UInt32, UInt32, UInt32);
template<>
-UInt32 func<1>(UInt32 x, UInt32 y, UInt32 z)
+inline UInt32 func<1>(UInt32 x, UInt32 y, UInt32 z)
{
return (y&x) | (z&~x);
}
template<>
-UInt32 func<2>(UInt32 x, UInt32 y, UInt32 z)
+inline UInt32 func<2>(UInt32 x, UInt32 y, UInt32 z)
{
return (x&z) | (y&~z);
}
template<>
-UInt32 func<3>(UInt32 x, UInt32 y, UInt32 z)
+inline UInt32 func<3>(UInt32 x, UInt32 y, UInt32 z)
{
return x^y^z;
}
template<>
-UInt32 func<4>(UInt32 x, UInt32 y, UInt32 z)
+inline UInt32 func<4>(UInt32 x, UInt32 y, UInt32 z)
{
return y^(x|~z);
}