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