Work around Clang's incomplete C++20 support for omitting typename

This commit is contained in:
Léo Lam 2021-11-05 13:25:54 +01:00
parent e256261b80
commit 027efc4358
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 4 additions and 4 deletions

View File

@ -31,7 +31,7 @@ namespace ams::sf {
public:
class Object;
using Allocator = StatelessDummyAllocator;
using StatelessAllocator = typename Policy::StatelessAllocator<Object>;
using StatelessAllocator = typename Policy::template StatelessAllocator<Object>;
class Object final : private ::ams::sf::impl::ServiceObjectImplBase2, public Base {
NON_COPYABLE(Object);

View File

@ -747,7 +747,7 @@ namespace ams::tipc {
using PortManager = PortManagerImpl;
private:
PortManager m_port_manager;
PortInfo::Allocator m_port_allocator;
typename PortInfo::Allocator m_port_allocator;
public:
constexpr ServerManagerImpl() : m_port_manager(), m_port_allocator() { /* ... */ }

View File

@ -295,7 +295,7 @@ namespace ams::util {
private:
constexpr explicit ALWAYS_INLINE Iterator(ImplIterator it) : m_impl(it) { /* ... */ }
constexpr explicit ALWAYS_INLINE Iterator(ImplIterator::pointer p) : m_impl(p) { /* ... */ }
constexpr explicit ALWAYS_INLINE Iterator(typename ImplIterator::pointer p) : m_impl(p) { /* ... */ }
constexpr ALWAYS_INLINE ImplIterator GetImplIterator() const {
return m_impl;

View File

@ -225,7 +225,7 @@ namespace ams::util {
template<typename T, typename Derived>
class OptionalBaseImpl {
protected:
using StoredType = std::remove_const<T>::type;
using StoredType = std::remove_const_t<T>;
template<typename... Args>
constexpr void ConstructImpl(Args &&... args) { static_cast<Derived *>(this)->m_payload.Construct(std::forward<Args>(args)...); }