簡體   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