emulators/rpcs3: unbreak on -CURRENT after src@95aa617e4bf0
In file included from rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:1:
In file included from rpcs3/stdafx.h:7:
In file included from Utilities/File.h:4:
rpcs3/util/shared_ptr.hpp:10:17: error: constexpr variable 'same_ptr_implicit_v<thread_future, thread_future_t<true, netstart_hack &, int>>' must be initialized by a constant expression
constexpr bool same_ptr_implicit_v = std::is_convertible_v<const volatile From*, const volatile To*> ? is_same_ptr<From, To>() : false; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rpcs3/util/shared_ptr.hpp:396:34: note: in instantiation of variable template specialization 'stx::same_ptr_implicit_v<thread_future, thread_future_t<true, netstart_hack &, int>>' requested here
template <typename U> requires same_ptr_implicit_v<T, U> ^
rpcs3/util/shared_ptr.hpp:396:34: note: while substituting template arguments into constraint expression here
template <typename U> requires same_ptr_implicit_v<T, U> ^~~~~~~~~~~~~~~~~~~~~~~~~
Utilities/Thread.h:567:18: note: while checking constraint satisfaction for template 'shared_ptr<thread_future_t<true, netstart_hack &, int>>' required here
thread::push(std::move(target)); ^~~
Utilities/Thread.h:567:18: note: in instantiation of function template specialization 'stx::shared_ptr<thread_future>::shared_ptr<thread_future_t<true, netstart_hack &, int>>' requested here
rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:264:43: note: in instantiation of function template specialization 'named_thread<netstart_hack>::operator()<true, int>' requested here
g_fxo->get<named_thread<netstart_hack>>()(0); ^
rpcs3/util/types.hpp:1049:16: note: non-constexpr function 'allocate' cannot be used in a constant expression
X* ptr = a.allocate(1); ^
rpcs3/util/shared_ptr.hpp:10:105: note: in call to 'is_same_ptr()'
constexpr bool same_ptr_implicit_v = std::is_convertible_v<const volatile From*, const volatile To*> ? is_same_ptr<From, To>() : false; ^
/usr/include/c++/v1/memory:1783:66: note: declared here
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _Tp* allocate(size_t __n) ^
In file included from rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:1:
In file included from rpcs3/stdafx.h:7:
In file included from Utilities/File.h:4:
rpcs3/util/shared_ptr.hpp:396:34: error: substitution into constraint expression resulted in a non-constant expression
template <typename U> requires same_ptr_implicit_v<T, U> ^~~~~~~~~~~~~~~~~~~~~~~~~
Utilities/Thread.h:567:18: note: while checking constraint satisfaction for template 'shared_ptr<thread_future_t<true, netstart_hack &, int>>' required here
thread::push(std::move(target)); ^~~
Utilities/Thread.h:567:18: note: in instantiation of function template specialization 'stx::shared_ptr<thread_future>::shared_ptr<thread_future_t<true, netstart_hack &, int>>' requested here
rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:264:43: note: in instantiation of function template specialization 'named_thread<netstart_hack>::operator()<true, int>' requested here
g_fxo->get<named_thread<netstart_hack>>()(0); ^
rpcs3/util/shared_ptr.hpp:396:34: note: initializer of 'same_ptr_implicit_v<thread_future, thread_future_t<true, netstart_hack &, int>>' is not a constant expression
template <typename U> requires same_ptr_implicit_v<T, U> ^
rpcs3/util/shared_ptr.hpp:10:17: note: declared here
constexpr bool same_ptr_implicit_v = std::is_convertible_v<const volatile From*, const volatile To*> ? is_same_ptr<From, To>() : false; ^
In file included from rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:3:
In file included from rpcs3/Emu/Cell/PPUModule.h:3:
In file included from rpcs3/Emu/Cell/PPUFunction.h:3:
In file included from rpcs3/Emu/Cell/PPUThread.h:3:
In file included from rpcs3/Emu/CPU/CPUThread.h:3:
Utilities/Thread.h:567:18: error: no viable conversion from 'typename remove_reference<single_ptr<thread_future_t<true, netstart_hack &, int>> &>::type' (aka 'stx::single_ptr<thread_future_t<true, netstart_hack &, int>>') to 'shared_ptr<thread_future>'
thread::push(std::move(target)); ^~~~~~~~~~~~~~~~~
rpcs3/Emu/Cell/Modules/cellNetCtl.cpp:264:43: note: in instantiation of function template specialization 'named_thread<netstart_hack>::operator()<true, int>' requested here
g_fxo->get<named_thread<netstart_hack>>()(0); ^
rpcs3/util/shared_ptr.hpp:356:3: note: candidate constructor not viable: no known conversion from 'typename remove_reference<single_ptr<thread_future_t<true, netstart_hack &, int>> &>::type' (aka 'stx::single_ptr<thread_future_t<true, netstart_hack &, int>>') to 'const stx::shared_ptr<thread_future> &' for 1st argument
shared_ptr(const shared_ptr& r) noexcept ^
rpcs3/util/shared_ptr.hpp:364:34: note: candidate constructor not viable: no known conversion from 'typename remove_reference<single_ptr<thread_future_t<true, netstart_hack &, int>> &>::type' (aka 'stx::single_ptr<thread_future_t<true, netstart_hack &, int>>') to 'std::nullptr_t' (aka 'nullptr_t') for 1st argument
[[deprecated("Use null_ptr")]] shared_ptr(std::nullptr_t) = delete; ^
rpcs3/util/shared_ptr.hpp:383:3: note: candidate constructor not viable: no known conversion from 'typename remove_reference<single_ptr<thread_future_t<true, netstart_hack &, int>> &>::type' (aka 'stx::single_ptr<thread_future_t<true, netstart_hack &, int>>') to 'stx::shared_ptr<thread_future> &&' for 1st argument
shared_ptr(shared_ptr&& r) noexcept ^
rpcs3/util/shared_ptr.hpp:376:3: note: candidate template ignored: could not match 'shared_ptr' against 'single_ptr'
shared_ptr(const shared_ptr<U>& r) noexcept ^
rpcs3/util/shared_ptr.hpp:390:3: note: candidate template ignored: could not match 'shared_ptr' against 'single_ptr'
shared_ptr(shared_ptr<U>&& r) noexcept ^
rpcs3/util/shared_ptr.hpp:397:3: note: candidate template ignored: failed template argument deduction
shared_ptr(single_ptr<U>&& r) noexcept ^
rpcs3/util/shared_ptr.hpp:367:12: note: explicit constructor is not a candidate
explicit shared_ptr(T* _this) noexcept ^
rpcs3/util/shared_ptr.hpp:200:3: note: candidate function
operator element_type*() const noexcept ^
rpcs3/util/shared_ptr.hpp:212:12: note: explicit conversion function is not a candidate
explicit operator single_ptr<U>() && noexcept ^
Utilities/Thread.h:187:37: note: passing argument to parameter here
void push(shared_ptr<thread_future>); ^
Reported by: pkg-fallout
(cherry picked from commit e8aa9591b338dee8335d4d4ccf088871bdb78b54)