diff --git a/include/experimental/utility b/include/experimental/utility new file mode 100644 index 00000000..12a7d050 --- /dev/null +++ b/include/experimental/utility @@ -0,0 +1,48 @@ +// -*- C++ -*- +//===-------------------------- utility ----------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_EXPERIMENTAL_UTILITY +#define _LIBCPP_EXPERIMENTAL_UTILITY + +/* + experimental/utility synopsis + +// C++1y + +#include + +namespace std { +namespace experimental { +inline namespace fundamentals_v1 { + + 3.1.2, erased-type placeholder + struct erased_type { }; + +} // namespace fundamentals_v1 +} // namespace experimental +} // namespace std + + */ + +# include + +#if _LIBCPP_STD_VER > 11 + +# include + +_LIBCPP_BEGIN_NAMESPACE_LFTS + + struct _LIBCPP_TYPE_VIS_ONLY erased_type { }; + +_LIBCPP_END_NAMESPACE_LFTS + +#endif /* _LIBCPP_STD_VER > 11 */ + +#endif /* _LIBCPP_EXPERIMENTAL_UTILITY */ diff --git a/test/experimental/utilities/nothing_to_do.pass.cpp b/test/experimental/utilities/nothing_to_do.pass.cpp new file mode 100644 index 00000000..9a59227a --- /dev/null +++ b/test/experimental/utilities/nothing_to_do.pass.cpp @@ -0,0 +1,13 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +int main() +{ +} diff --git a/test/experimental/utilities/utility/utility.erased.type/erased_type.pass.cpp b/test/experimental/utilities/utility/utility.erased.type/erased_type.pass.cpp new file mode 100644 index 00000000..5f89e536 --- /dev/null +++ b/test/experimental/utilities/utility/utility.erased.type/erased_type.pass.cpp @@ -0,0 +1,20 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +#include + +int main() +{ +#if _LIBCPP_STD_VER > 11 + using std::experimental::erased_type; + constexpr erased_type e{}; +#endif +} diff --git a/test/experimental/utilities/utility/utility.synop/includes.pass.cpp b/test/experimental/utilities/utility/utility.synop/includes.pass.cpp new file mode 100644 index 00000000..bcdd8b38 --- /dev/null +++ b/test/experimental/utilities/utility/utility.synop/includes.pass.cpp @@ -0,0 +1,21 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +#include + +int main() +{ +#if _LIBCPP_STD_VER > 11 +# ifndef _LIBCPP_UTILITY +# error " must include " +# endif +#endif /* _LIBCPP_STD_VER > 11 */ +} diff --git a/test/experimental/utilities/utility/version.pass.cpp b/test/experimental/utilities/utility/version.pass.cpp new file mode 100644 index 00000000..43771245 --- /dev/null +++ b/test/experimental/utilities/utility/version.pass.cpp @@ -0,0 +1,20 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +#include + +#ifndef _LIBCPP_VERSION +#error _LIBCPP_VERSION not defined +#endif + +int main() +{ +} diff --git a/www/ts1z_status.html b/www/ts1z_status.html index c06ef7b5..3a157701 100644 --- a/www/ts1z_status.html +++ b/www/ts1z_status.html @@ -59,7 +59,7 @@ Additions to std::promiseNot started Additions to std::packaged_taskNot started - Class erased_typeNot started + Class erased_typeInitial implementation complete Calling a function with a tuple of argumentsNot started Other type transformationsNot started Compile-time Rational ArithmeticNot started