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`)
13 struct vector (T
, A
= allocator
!T
);
14 struct array (T
, size_t N
);
22 struct vector (T
, A
= allocator
!T
);
23 struct array (T
, size_t N
);
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
);
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
);
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
);