AK: Use direct-list-initialization for Vector::empend() (#4564)

clang trunk with -std=c++20 doesn't seem to properly look for an
aggregate initializer here when the type being constructed is a simple
aggregate (e.g. `struct Thing { int a; int b; };`). This template fails
to compile in a usage added 12/16/2020 in `AK/Trie.h`.

Both forms of initialization are supposed to call the
aggregate-initializers but direct-list-initialization delegating to
aggregate initializers is a new addition in c++20 that might not be
implemented yet.
This commit is contained in:
Nathan Lanza 2020-12-27 17:06:37 -05:00 committed by GitHub
parent 1867c928a9
commit d1891f67ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: sideshowbarker 2024-07-19 00:32:00 +09:00
4 changed files with 6 additions and 6 deletions

View file

@ -398,7 +398,7 @@ public:
void empend(Args&&... args)
{
grow_capacity(m_size + 1);
new (slot(m_size)) T(forward<Args>(args)...);
new (slot(m_size)) T { forward<Args>(args)... };
++m_size;
}

View file

@ -1433,8 +1433,8 @@ KResult Ext2FS::create_directory(InodeIdentifier parent_id, const String& name,
#endif
Vector<Ext2FSDirectoryEntry> entries;
entries.empend(".", inode->identifier(), EXT2_FT_DIR);
entries.empend("..", parent_id, EXT2_FT_DIR);
entries.empend(".", inode->identifier(), static_cast<u8>(EXT2_FT_DIR));
entries.empend("..", parent_id, static_cast<u8>(EXT2_FT_DIR));
bool success = static_cast<Ext2FSInode&>(*inode).write_directory(entries);
ASSERT(success);

View file

@ -191,7 +191,7 @@ public:
ByteCode bytecode;
bytecode.empend(static_cast<ByteCodeValueType>(OpCodeId::Compare));
bytecode.empend(1); // number of arguments
bytecode.empend(static_cast<u64>(1)); // number of arguments
ByteCode arguments;
@ -209,7 +209,7 @@ public:
ByteCode bytecode;
bytecode.empend(static_cast<ByteCodeValueType>(OpCodeId::Compare));
bytecode.empend(1); // number of arguments
bytecode.empend(static_cast<u64>(1)); // number of arguments
ByteCode arguments;

View file

@ -32,7 +32,7 @@
#include <ctype.h>
#include <stdlib.h>
#define C_IN 1
const u16 C_IN = 1;
DNSRequest::DNSRequest()
: m_id(arc4random_uniform(UINT16_MAX))