MATCH: Improve `A CMP 0 ? A : -A` set of patterns to use bitwise_equal_p.
[official-gcc.git] / gcc / testsuite / gdc.test / runnable_cxx / cpp_stdlib.d
blobdd7bb11fc648e44b91b78cd73ba8faac855bcf5d
1 // DISABLED: win32 win64
2 // EXTRA_CPP_SOURCES: cpp_stdlib.cpp
3 // CXXFLAGS(osx linux freebsd openbsd netbsd dragonflybsd solaris): -std=c++11
4 import core.stdc.stdio;
6 // Disabled on windows because it needs bindings
8 version (CppRuntime_Clang)
10 extern(C++, `std`, `__1`)
12 struct allocator(T);
13 struct vector (T, A = allocator!T);
14 struct array (T, size_t N);
17 else
19 extern(C++, `std`)
21 struct allocator(T);
22 struct vector (T, A = allocator!T);
23 struct array (T, size_t N);
27 extern(C++):
29 ref T identity (T) (ref T v);
30 T** identityPP (T) (T** v);
31 vector!T* getVector (T) (size_t length, const T* ptr);
32 array!(T, N)* getArray(T, size_t N) (const T* ptr);
34 void main ()
36 int i = 42;
37 float f = 21.0f;
39 int* pi = &i;
40 float* pf = &f;
42 assert(42 == identity(i));
43 assert(21.0f == identity(f));
44 assert(&pi == identityPP(&pi));
45 assert(&pf == identityPP(&pf));
47 auto vi = getVector(1, &i);
48 auto vf = getVector(3, [f, f, f].ptr);
49 assert(vi !is null);
50 assert(vf !is null);
52 auto ai = getArray!(int, 4)([2012, 10, 11, 42].ptr);
53 auto af = getArray!(float, 4)([42.0f, 21.0f, 14.0f, 1957.0f].ptr);
54 assert(ai !is null);
55 assert(af !is null);
57 printf("Success\n");