diff --git a/stl/inc/forward_list b/stl/inc/forward_list index 62c888e47ba..d213386f2bd 100644 --- a/stl/inc/forward_list +++ b/stl/inc/forward_list @@ -1208,12 +1208,12 @@ public: _Nodeptr* _Tail; }; - auto remove(const _Ty& _Val) { // erase each element matching _Val + _LIST_REMOVE_RETURN remove(const _Ty& _Val) { // erase each element matching _Val return remove_if([&](const _Ty& _Other) -> bool { return _Other == _Val; }); } template - auto remove_if(_Pr1 _Pred) { // erase each element satisfying _Pr1 + _LIST_REMOVE_RETURN remove_if(_Pr1 _Pred) { // erase each element satisfying _Pr1 _Flist_node_remove_op _Op(*this); auto _Firstb = _Unchecked_before_begin(); size_type _Removed = 0; @@ -1235,12 +1235,12 @@ public: #endif } - auto unique() { // erase each element matching previous + _LIST_REMOVE_RETURN unique() { // erase each element matching previous return unique(equal_to<>{}); } template - auto unique(_Pr2 _Pred) { // erase each element satisfying _Pred with previous + _LIST_REMOVE_RETURN unique(_Pr2 _Pred) { // erase each element satisfying _Pred with previous _Flist_node_remove_op _Op(*this); auto _First = _Unchecked_begin(); size_type _Removed = 0; diff --git a/stl/inc/list b/stl/inc/list index 033a43c60c7..d89caf3f3dd 100644 --- a/stl/inc/list +++ b/stl/inc/list @@ -1662,12 +1662,12 @@ public: _Nodeptr* _Tail; }; - auto remove(const _Ty& _Val) { // erase each element matching _Val + _LIST_REMOVE_RETURN remove(const _Ty& _Val) { // erase each element matching _Val return remove_if([&](const _Ty& _Other) -> bool { return _Other == _Val; }); } template - auto remove_if(_Pr1 _Pred) { // erase each element satisfying _Pred + _LIST_REMOVE_RETURN remove_if(_Pr1 _Pred) { // erase each element satisfying _Pred auto& _My_data = _Mypair._Myval2; _List_node_remove_op _Op(*this); const auto _Last = _My_data._Myhead; @@ -1688,12 +1688,12 @@ public: #endif } - auto unique() { // erase each element matching previous + _LIST_REMOVE_RETURN unique() { // erase each element matching previous return unique(equal_to<>{}); } template - auto unique(_Pr2 _Pred) { // erase each element satisfying _Pred with previous + _LIST_REMOVE_RETURN unique(_Pr2 _Pred) { // erase each element satisfying _Pred with previous _List_node_remove_op _Op(*this); const _Nodeptr _Phead = _Mypair._Myval2._Myhead; _Nodeptr _Pprev = _Phead->_Next; diff --git a/stl/inc/xmemory b/stl/inc/xmemory index 3aa11f488c8..8f02402e3b2 100644 --- a/stl/inc/xmemory +++ b/stl/inc/xmemory @@ -2649,6 +2649,12 @@ _STD_END #define _CONTAINER_EMPLACE_RETURN void #endif // ^^^ !_HAS_CXX17 ^^^ +#if _HAS_CXX20 +#define _LIST_REMOVE_RETURN size_type +#else // ^^^ _HAS_CXX20 ^^^ / vvv !_HAS_CXX20 vvv +#define _LIST_REMOVE_RETURN void +#endif // ^^^ !_HAS_CXX20 ^^^ + #pragma pop_macro("new") _STL_RESTORE_CLANG_WARNINGS #pragma warning(pop)