fix compilation with libc++

This code does something forbidden: it forward declares types from the
standard library. Sadly there's no standard way to do it. I'd have to
include the complete headers.

Anyway, for libc++ it's not in std directly but a namespace defined via
_LIBCPP_BEGIN/END_NAMESPACE_STD macros.

Signed-off-by: Matthias Kretz <kretz@kde.org>
Vc::array: compile with clang 3.5 and libc++

removed some GCCisms

Signed-off-by: Matthias Kretz <kretz@kde.org>
needed <random> include

while at it I sorted the includes

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: missing 3 double_v -> 1 (u)short_v casts

with SSE 3*double_v::Size fits in (u)short_v::Size. The implementation
forwards to the double_v -> int_v cast.

Signed-off-by: Matthias Kretz <kretz@kde.org>
operator new/delete overloads cannot use _mm_malloc

The generic definition of these overloads cannot use _mm_malloc since
that might be unavailable on some non-SSE platforms. The existing
abstraction for it already exists in Vc::Common as aligned_malloc. In
order to use this a few more includes and forward decls are needed.

Signed-off-by: Matthias Kretz <kretz@kde.org>
subscript: uses std::vector => #include <vector>

Signed-off-by: Matthias Kretz <kretz@kde.org>
include avx/intrinsics.h first for SSE with VC_IMPL_AVX

Signed-off-by: Matthias Kretz <kretz@kde.org>