繁体   English   中英

vulkan-hpp 中奇怪的 C++ 语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM