${licenseHeader} #ifndef VULKAN_HANDLES_HPP # define VULKAN_HANDLES_HPP // include-what-you-use: make sure, vulkan.hpp is used by code-completers // IWYU pragma: private; include "vulkan.hpp" namespace VULKAN_HPP_NAMESPACE { ${structForwardDeclarations} ${handleForwardDeclarations} ${funcPointerReturns} ${uniqueHandles} ${handles} // operators to compare vk::-handles #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) template ::value, int>::type = 0> auto operator<=>( T const & lhs, T const & rhs ) { return static_cast( lhs ) <=> static_cast( rhs ); } #else template ::value, int>::type = 0> bool operator==( T const & lhs, T const & rhs ) { return static_cast( lhs ) == static_cast( rhs ); } template ::value, int>::type = 0> bool operator!=( T const & lhs, T const & rhs ) { return static_cast( lhs ) != static_cast( rhs ); } template ::value, int>::type = 0> bool operator<( T const & lhs, T const & rhs ) { return static_cast( lhs ) < static_cast( rhs ); } #endif template ::value, int>::type = 0> bool operator==( T const & v, std::nullptr_t ) { return !v; } template ::value, int>::type = 0> bool operator==( std::nullptr_t, T const & v ) { return !v; } template ::value, int>::type = 0> bool operator!=( T const & v, std::nullptr_t ) { return !!v; } template ::value, int>::type = 0> bool operator!=( std::nullptr_t, T const & v ) { return !!v; } } // namespace VULKAN_HPP_NAMESPACE #endif