This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| In file included from /opt/gcc-tot/include/c++/7.0.0/bits/move.h:57:0, | |
| from /opt/gcc-tot/include/c++/7.0.0/bits/stl_pair.h:59, | |
| from /opt/gcc-tot/include/c++/7.0.0/utility:70, | |
| from /opt/gcc-tot/include/c++/7.0.0/tuple:38, | |
| from test.pass.cpp:3: | |
| /opt/gcc-tot/include/c++/7.0.0/type_traits: In instantiation of ‘struct std::__and_<std::is_constructible<dynamic, Optional<std::tuple<dynamic> >&&> >’: | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:485:68: required from ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {Optional<std::tuple<dynamic> >}; bool <anonymous> = true; _Elements = {dynamic}]’ | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:641:59: required by substitution of ‘template<class ... _UElements, typename std::enable_if<((std::_TC<((1ul == sizeof... (_UElements)) && std::_TC<(sizeof... (_UElements) == 1), dynamic>::_NotSameTuple<_UElements ...>()), dynamic>::_MoveConstructibleTuple<_UElements ...>() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| In file included from test.pass.cpp:3: | |
| In file included from /opt/gcc-tot/include/c++/7.0.0/tuple:38: | |
| In file included from /opt/gcc-tot/include/c++/7.0.0/utility:70: | |
| In file included from /opt/gcc-tot/include/c++/7.0.0/bits/stl_pair.h:59: | |
| In file included from /opt/gcc-tot/include/c++/7.0.0/bits/move.h:57: | |
| /opt/gcc-tot/include/c++/7.0.0/type_traits:139:14: error: base class has incomplete type | |
| : public _B1 | |
| ~~~~~~~^~~ | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:485:14: note: in instantiation of template class 'std::__and_<std::is_constructible<dynamic, Optional<std::tuple<dynamic> > &&> >' requested here | |
| return __and_<is_constructible<_Elements, _UElements&&>...>::value; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| In file included from PR29123_implicit_constructor_sfinae.pass.cpp:3: | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:485:68: error: no member named 'value' in 'std::__and_<std::is_constructible<dynamic, Optional<std::tuple<dynamic> > &&> >' | |
| return __and_<is_constructible<_Elements, _UElements&&>...>::value; | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:641:21: note: in instantiation of function template specialization 'std::_TC<true, dynamic>::_MoveConstructibleTuple<Optional<std::tuple<dynamic> > | |
| >' requested here | |
| _MoveConstructibleTuple<_UElements...>() | |
| ^ | |
| /opt/gcc-tot/include/c++/7.0.0/tuple:646:19: note: while substituting prior template arguments into non-type template parameter [with _UElements = <Optional<std::tuple<dynamic> >>] | |
| constexpr tuple(_UElements&&... __elements) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/include/optional b/include/optional | |
| index d60f375..bcf58ab 100644 | |
| --- a/include/optional | |
| +++ b/include/optional | |
| @@ -1,1144 +1,1205 @@ | |
| // -*- C++ -*- | |
| //===-------------------------- optional ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/include/optional b/include/optional | |
| index d60f375..cfccc42 100644 | |
| --- a/include/optional | |
| +++ b/include/optional | |
| @@ -1,1144 +1,1237 @@ | |
| // -*- C++ -*- | |
| //===-------------------------- optional ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/include/optional b/include/optional | |
| index 3f67363..438fed2 100644 | |
| --- a/include/optional | |
| +++ b/include/optional | |
| @@ -184,13 +184,31 @@ struct nullopt_t | |
| /* inline */ constexpr nullopt_t nullopt{nullopt_t::__secret_tag{}, nullopt_t::__secret_tag{}}; | |
| +template <class _Tp, bool = is_trivially_copyable<_Tp>::value> | |
| +struct __optional_value { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/include/optional b/include/optional | |
| index 3315334..2f76429 100644 | |
| --- a/include/optional | |
| +++ b/include/optional | |
| @@ -384,70 +384,17 @@ constexpr bool _Is_specialization = false; | |
| template <class... _Args, template <class...> class _Template> | |
| constexpr bool _Is_specialization<_Template<_Args...>, _Template> = true; | |
| -template <bool _CanCopy, bool _CanMove> | |
| -struct __optional_sfinae_ctor_base; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/include/optional b/include/optional | |
| index 298f91a..9675ee7 100644 | |
| --- a/include/optional | |
| +++ b/include/optional | |
| @@ -241,7 +241,7 @@ struct __optional_destruct_base<_Tp, true> | |
| __engaged_(true) {} | |
| }; | |
| -template <class _Tp> | |
| +template <class _Tp, bool = is_trivially_copyable<_Tp>::value> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===----------------------------------------------------------------------===// | |
| // | |
| // 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. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // UNSUPPORTED: c++98, c++03, c++11, c++14 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/test/support/nasty_macros.hpp b/test/support/nasty_macros.hpp | |
| index 074853e..80f903e 100644 | |
| --- a/test/support/nasty_macros.hpp | |
| +++ b/test/support/nasty_macros.hpp | |
| @@ -37,4 +37,10 @@ | |
| #define _Y NASTY_MACRO | |
| #define _Z NASTY_MACRO | |
| +template <class T, class U> | |
| +void forward(U&&) = delete; |