[英]Strange C++ syntax in vulkan-hpp
我一直在查看 vulkan-hpp 源代码,试图了解如何管理StructureChain
。 我发现这种看起来很奇怪的语法(用注释标记的行)与使用template
关键字作为成员类型有关。 此外,它后面跟着一个没有;
的函数调用;
前。
template<typename X, typename Y, typename ...Z, typename Dispatch>
VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, Dispatch const &d ) const VULKAN_HPP_NOEXCEPT
{
StructureChain<X, Y, Z...> structureChain;
VULKAN_HPP_NAMESPACE::FormatProperties2& formatProperties = structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>(); //This line
d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2*>( &formatProperties ) );
return structureChain;
}
谁能帮我弄清楚这行的意思?
此template
关键字用于消除以下表达式作为模板实例的歧义。
structureChain
类型取决于模板参数,因此编译器不知道如何解释以下get<VULKAN_HPP_NAMESPACE::FormatProperties2
表达式,它可能是get
模板的实例化,或比较表达式。 template
关键字表示get
是模板,下面是模板实例化。 如果没有这个关键字,编译器会假设get
不是模板,所以下面的必须是一个比较表达式。
见这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.