Syntax sugar for {} with structs

Petar Petar
Tue Jul 5 17:56:05 UTC 2022


On Friday, 1 July 2022 at 21:01:43 UTC, Paul Backus wrote:
> Maybe if the proposal were for some kind of "struct literals", 
> rather than just `{}` by itself, it would be more attractive.

That would be this issue: 
https://issues.dlang.org/show_bug.cgi?id=15692.

Rephrasing the example from the second comment:


```d
auto img = createImage(device, VkImageCreateInfo {
	imageType: VkImageType.VK_IMAGE_TYPE_2D,
	format: VkFormat.VK_FORMAT_R8G8B8A8_UNORM,
	extent: image.size,
	mipLevels: image.mipLevels,
	arrayLayers: image.layers,
	samples: VkSampleCountFlagBits.VK_SAMPLE_COUNT_1_BIT,
	tiling: VkImageTiling.VK_IMAGE_TILING_LINEAR, 
//VK_IMAGE_TILING_OPTIMAL,
	usage: VkImageUsageFlagBits.VK_IMAGE_USAGE_TRANSFER_SRC_BIT | 
VkImageUsageFlagBits.VK_IMAGE_USAGE_SAMPLED_BIT,
	sharingMode: VkSharingMode.VK_SHARING_MODE_EXCLUSIVE,
	initialLayout: VkImageLayout.VK_IMAGE_LAYOUT_PREINITIALIZED,
});

// Or C#-style "target-typed `new`" / C++-style aggregate 
initialization
auto img = createImage(device, {
	imageType: VkImageType.VK_IMAGE_TYPE_2D,
	format: VkFormat.VK_FORMAT_R8G8B8A8_UNORM,
	extent: image.size,
	mipLevels: image.mipLevels,
	arrayLayers: image.layers,
	samples: VkSampleCountFlagBits.VK_SAMPLE_COUNT_1_BIT,
	tiling: VkImageTiling.VK_IMAGE_TILING_LINEAR, 
//VK_IMAGE_TILING_OPTIMAL,
	usage: VkImageUsageFlagBits.VK_IMAGE_USAGE_TRANSFER_SRC_BIT | 
VkImageUsageFlagBits.VK_IMAGE_USAGE_SAMPLED_BIT,
	sharingMode: VkSharingMode.VK_SHARING_MODE_EXCLUSIVE,
	initialLayout: VkImageLayout.VK_IMAGE_LAYOUT_PREINITIALIZED,
});
```



More information about the Digitalmars-d mailing list