与 C++/CX 不同,C++/WinRT 中似乎没有 GUID 的包装类型。它只是按原样使用普通的 C GUID 结构。因此,构造初始化 GUID 的唯一方法是使用聚合初始化语法,例如
GUID const guid{ 0x00000000, 0x0000, 0x0000,{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
虽然这有效(并且 Visual Studio 中的创建 GUID工具甚至可以设置为为您生成初始化程序代码),但它只是乏味,远非可读,并且无论我是否引入任何字节序问题,总是让我摸不着头脑。
我更愿意写(使用假设make_guid
函数)
auto const guid{ make_guid("00000000-0000-0000-0000-000000000000") };
我知道 C++/WinRT 在constexpr
从完全限定的类型名称计算 GUID 方面做了很多魔术,所以大概可以实现零开销的编译时间make_guid
函数。浏览文档和winrt/base.h,我没有发现任何立即适用的内容。
C++/WinRT 是否提供帮助函数以在编译时从字符串文字构造 GUID?如果没有,我们/我可以拥有一个吗?