Spell out std::unique_ptr constructor calls
diff --git a/internal/cgen/cgen.go b/internal/cgen/cgen.go
index bd00407..ea4cae1 100644
--- a/internal/cgen/cgen.go
+++ b/internal/cgen/cgen.go
@@ -1166,14 +1166,15 @@
b.writes("// On failure, the alloc_etc functions return nullptr. They don't throw.\n\n")
b.writes("static inline unique_ptr\n")
b.writes("alloc() {\n")
- b.printf("return unique_ptr(%s%s__alloc(), &free);\n", g.pkgPrefix, structName)
+ b.printf("return std::unique_ptr<%s%s, decltype(&free)>(\n%s%s__alloc(), &free);\n",
+ g.pkgPrefix, structName, g.pkgPrefix, structName)
b.writes("}\n")
for _, impl := range n.Implements() {
iQID := impl.AsTypeExpr().QID()
iName := fmt.Sprintf("wuffs_%s__%s", iQID[0].Str(g.tm), iQID[1].Str(g.tm))
b.printf("\nstatic inline %s::unique_ptr\n", iName)
b.printf("alloc_as__%s() {\n", iName)
- b.printf("return %s::unique_ptr(\n%s%s__alloc_as__%s(), &free);\n",
+ b.printf("return std::unique_ptr<%s, decltype(&free)>(\n%s%s__alloc_as__%s(), &free);\n",
iName, g.pkgPrefix, structName, iName)
b.printf("}\n")
}
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index e4d7f9b..090021b 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -4686,12 +4686,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_adler32__hasher__alloc(), &free);
+ return std::unique_ptr<wuffs_adler32__hasher, decltype(&free)>(
+ wuffs_adler32__hasher__alloc(), &free);
}
static inline wuffs_base__hasher_u32::unique_ptr
alloc_as__wuffs_base__hasher_u32() {
- return wuffs_base__hasher_u32::unique_ptr(
+ return std::unique_ptr<wuffs_base__hasher_u32, decltype(&free)>(
wuffs_adler32__hasher__alloc_as__wuffs_base__hasher_u32(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -4961,12 +4962,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_bmp__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_bmp__decoder, decltype(&free)>(
+ wuffs_bmp__decoder__alloc(), &free);
}
static inline wuffs_base__image_decoder::unique_ptr
alloc_as__wuffs_base__image_decoder() {
- return wuffs_base__image_decoder::unique_ptr(
+ return std::unique_ptr<wuffs_base__image_decoder, decltype(&free)>(
wuffs_bmp__decoder__alloc_as__wuffs_base__image_decoder(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -5201,12 +5203,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_crc32__ieee_hasher__alloc(), &free);
+ return std::unique_ptr<wuffs_crc32__ieee_hasher, decltype(&free)>(
+ wuffs_crc32__ieee_hasher__alloc(), &free);
}
static inline wuffs_base__hasher_u32::unique_ptr
alloc_as__wuffs_base__hasher_u32() {
- return wuffs_base__hasher_u32::unique_ptr(
+ return std::unique_ptr<wuffs_base__hasher_u32, decltype(&free)>(
wuffs_crc32__ieee_hasher__alloc_as__wuffs_base__hasher_u32(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -5455,12 +5458,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_deflate__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_deflate__decoder, decltype(&free)>(
+ wuffs_deflate__decoder__alloc(), &free);
}
static inline wuffs_base__io_transformer::unique_ptr
alloc_as__wuffs_base__io_transformer() {
- return wuffs_base__io_transformer::unique_ptr(
+ return std::unique_ptr<wuffs_base__io_transformer, decltype(&free)>(
wuffs_deflate__decoder__alloc_as__wuffs_base__io_transformer(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -5683,12 +5687,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_lzw__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_lzw__decoder, decltype(&free)>(
+ wuffs_lzw__decoder__alloc(), &free);
}
static inline wuffs_base__io_transformer::unique_ptr
alloc_as__wuffs_base__io_transformer() {
- return wuffs_base__io_transformer::unique_ptr(
+ return std::unique_ptr<wuffs_base__io_transformer, decltype(&free)>(
wuffs_lzw__decoder__alloc_as__wuffs_base__io_transformer(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -6127,12 +6132,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_gif__config_decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_gif__config_decoder, decltype(&free)>(
+ wuffs_gif__config_decoder__alloc(), &free);
}
static inline wuffs_base__image_decoder::unique_ptr
alloc_as__wuffs_base__image_decoder() {
- return wuffs_base__image_decoder::unique_ptr(
+ return std::unique_ptr<wuffs_base__image_decoder, decltype(&free)>(
wuffs_gif__config_decoder__alloc_as__wuffs_base__image_decoder(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -6390,12 +6396,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_gif__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_gif__decoder, decltype(&free)>(
+ wuffs_gif__decoder__alloc(), &free);
}
static inline wuffs_base__image_decoder::unique_ptr
alloc_as__wuffs_base__image_decoder() {
- return wuffs_base__image_decoder::unique_ptr(
+ return std::unique_ptr<wuffs_base__image_decoder, decltype(&free)>(
wuffs_gif__decoder__alloc_as__wuffs_base__image_decoder(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -6663,12 +6670,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_gzip__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_gzip__decoder, decltype(&free)>(
+ wuffs_gzip__decoder__alloc(), &free);
}
static inline wuffs_base__io_transformer::unique_ptr
alloc_as__wuffs_base__io_transformer() {
- return wuffs_base__io_transformer::unique_ptr(
+ return std::unique_ptr<wuffs_base__io_transformer, decltype(&free)>(
wuffs_gzip__decoder__alloc_as__wuffs_base__io_transformer(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -6930,12 +6938,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_json__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_json__decoder, decltype(&free)>(
+ wuffs_json__decoder__alloc(), &free);
}
static inline wuffs_base__token_decoder::unique_ptr
alloc_as__wuffs_base__token_decoder() {
- return wuffs_base__token_decoder::unique_ptr(
+ return std::unique_ptr<wuffs_base__token_decoder, decltype(&free)>(
wuffs_json__decoder__alloc_as__wuffs_base__token_decoder(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -7197,12 +7206,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_wbmp__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_wbmp__decoder, decltype(&free)>(
+ wuffs_wbmp__decoder__alloc(), &free);
}
static inline wuffs_base__image_decoder::unique_ptr
alloc_as__wuffs_base__image_decoder() {
- return wuffs_base__image_decoder::unique_ptr(
+ return std::unique_ptr<wuffs_base__image_decoder, decltype(&free)>(
wuffs_wbmp__decoder__alloc_as__wuffs_base__image_decoder(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)
@@ -7485,12 +7495,13 @@
static inline unique_ptr
alloc() {
- return unique_ptr(wuffs_zlib__decoder__alloc(), &free);
+ return std::unique_ptr<wuffs_zlib__decoder, decltype(&free)>(
+ wuffs_zlib__decoder__alloc(), &free);
}
static inline wuffs_base__io_transformer::unique_ptr
alloc_as__wuffs_base__io_transformer() {
- return wuffs_base__io_transformer::unique_ptr(
+ return std::unique_ptr<wuffs_base__io_transformer, decltype(&free)>(
wuffs_zlib__decoder__alloc_as__wuffs_base__io_transformer(), &free);
}
#endif // defined(WUFFS_HAS_CPP11)