Support For Incomplete Types In reference_wrapper (#393)

* Implement P0357R3
* Update LLVM to get skip of libcxx\test\std\utilities\function.objects\refwrap\weak_result.pass.cpp, and exclude "// REQUIRES: c++98 || c++03 || c++11 || c++14 || c++17" as a 'magic comment'.

Co-authored-by: Billy O'Neal <billy.oneal@gmail.com>
Co-authored-by: Casey Carter <cartec69@gmail.com>
This commit is contained in:
Adam Bucior 2020-01-09 22:54:20 +01:00 коммит произвёл Billy O'Neal
Родитель 31bed7ae0d
Коммит d862650bd5
4 изменённых файлов: 8 добавлений и 2 удалений

@ -1 +1 @@
Subproject commit 0b969fa9ccf595abc31942e5d14be784707e960c
Subproject commit 85ee4ff4e474788abc7abdc939114281c2a68ec1

Просмотреть файл

@ -1845,7 +1845,11 @@ template <class _Ty, class _Uty>
struct _Refwrap_has_ctor_from<_Ty, _Uty, void_t<decltype(_Refwrap_ctor_fun<_Ty>(_STD declval<_Uty>()))>> : true_type {};
template <class _Ty>
class reference_wrapper : public _Weak_types<_Ty>::type { // stand-in for an assignable reference
class reference_wrapper
#if !_HAS_CXX20
: public _Weak_types<_Ty>::type
#endif // !_HAS_CXX20
{
public:
static_assert(is_object_v<_Ty> || is_function_v<_Ty>,
"reference_wrapper<T> requires T to be an object type or a function type.");

Просмотреть файл

@ -130,6 +130,7 @@
// P0318R1 unwrap_reference, unwrap_ref_decay
// P0325R4 to_array()
// P0356R5 bind_front()
// P0357R3 Supporting Incomplete Types In reference_wrapper
// P0439R0 enum class memory_order
// P0457R2 starts_with()/ends_with() For basic_string/basic_string_view
// P0458R2 contains() For Ordered And Unordered Associative Containers

Просмотреть файл

@ -2,4 +2,5 @@
// REQUIRES: c++11 || c++14
// REQUIRES: c++98 || c++03
// REQUIRES: c++98 || c++03 || c++11 || c++14
// REQUIRES: c++98 || c++03 || c++11 || c++14 || c++17
// UNSUPPORTED: c++14, c++17, c++2a