28 #ifndef YB_INC_ystdex_algorithm_hpp_
29 #define YB_INC_ystdex_algorithm_hpp_ 1
54 template <
class _type>
58 static_assert(std::is_pod<
typename std::remove_reference<_type>::type>
59 ::value,
"Non-POD type found @ pod_fill;");
61 switch((last - first) & 7)
66 *first = value; ++
first;
67 case 7: *first = value; ++
first;
68 case 6: *first = value; ++
first;
69 case 5: *first = value; ++
first;
70 case 4: *first = value; ++
first;
71 case 3: *first = value; ++
first;
72 case 2: *first = value; ++
first;
73 case 1: *first = value; ++
first;
79 template <
class _type>
83 static_assert(std::is_pod<
typename std::remove_reference<_type>::type>
84 ::value,
"Non-POD type found @ pod_copy_n;");
86 std::memcpy(result, first,
sizeof(*first) * n);
90 template <
class _type>
97 template <
class _type>
101 static_assert(std::is_pod<
typename std::remove_reference<_type>::type>
102 ::value,
"Non-POD type found @ pod_move_n;");
104 std::memmove(result, first,
sizeof(*first) * n);
108 template <
class _type>
127 template<
typename _tForward>
131 _tForward result(first);
133 for(_tForward i(first); i != last; ++i)
134 if(std::find(first, result, *i) == result)