diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index a4e1a63..e867d20 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -15647,22 +15647,24 @@ int main( int argc, char ** argv ) # pragma GCC diagnostic pop # endif - // Any type with a .data() return type implicitly convertible to T*, and a - // .size() return type implicitly convertible to size_t. The const version - // can capture temporaries, with lifetime ending at end of statement. - template().data()), T*>::value - && std::is_convertible().size()), std::size_t>::value>::type* = nullptr> - ArrayProxy( const V & v ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( v.size() ) ), - m_ptr( v.data() ) + // Any type with a .data() return type implicitly convertible to T*, and a .size() return type implicitly + // convertible to size_t. The const version can capture temporaries, with lifetime ending at end of statement. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( V const & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - template().data()), T*>::value - && std::is_convertible().size()), std::size_t>::value>::type* = nullptr> + + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> ArrayProxy( V & v ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( v.size() ) ), - m_ptr( v.data() ) + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} const T * begin() const VULKAN_HPP_NOEXCEPT @@ -15726,7 +15728,7 @@ int main( int argc, char ** argv ) , m_ptr( &value ) {} - template + template ArrayProxyNoTemporaries( V && value ) = delete; template ::value, int>::type = 0> @@ -15782,14 +15784,15 @@ int main( int argc, char ** argv ) template ::value, int>::type = 0> ArrayProxyNoTemporaries( std::initializer_list::type> && list ) = delete; - // Any type with a .data() return type implicitly convertible to T*, and a - // .size() return type implicitly convertible to size_t. - template().data()), T*>::value - && std::is_convertible().size()), std::size_t>::value>::type* = nullptr> + // Any type with a .data() return type implicitly convertible to T*, and a // .size() return type implicitly + // convertible to size_t. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> ArrayProxyNoTemporaries( V & v ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( v.size() ) ), - m_ptr( v.data() ) + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} const T * begin() const VULKAN_HPP_NOEXCEPT diff --git a/tests/ArrayProxy/ArrayProxy.cpp b/tests/ArrayProxy/ArrayProxy.cpp index e8ffbb6..3d0479f 100644 --- a/tests/ArrayProxy/ArrayProxy.cpp +++ b/tests/ArrayProxy/ArrayProxy.cpp @@ -41,7 +41,7 @@ int main( int /*argc*/, char ** /*argv*/ ) assert( ap0.size() == 0 ); // Type - // fct(2); // not supported: cannot convert from 'const int *' to 'T *' + // fct(2); // not supported: cannot convert argument 1 from 'int' to 'vk::ArrayProxy' fctc( 1 ); int i0 = 1; @@ -49,7 +49,7 @@ int main( int /*argc*/, char ** /*argv*/ ) fctc( i0 ); const int i1 = 2; - // fct(i1); // not supported: cannot convert from 'const int *' to 'T *' + // fct(i1); // not supported: cannot convert argument 1 from 'const int' to 'vk::ArrayProxy' fctc( i1 ); // count, T * @@ -59,7 +59,7 @@ int main( int /*argc*/, char ** /*argv*/ ) // count, T const* int const * i1p = &i1; - // fct({ 1, i1p }); // not supported: cannot convert from 'const int *' to 'T *' + // fct({ 1, i1p }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxy' fctc( { 1, i1p } ); // std::array @@ -69,7 +69,7 @@ int main( int /*argc*/, char ** /*argv*/ ) // std::array const std::array sa1 = { 0, 1 }; - // fct(sa1); // not supported: cannot convert from '_Ty *' to 'T *' + // fct(sa1); // not supported: cannot convert argument 1 from 'std::array' to 'vk::ArrayProxy' fctc( sa1 ); std::array const sa2 = { 1, 2 }; @@ -77,14 +77,14 @@ int main( int /*argc*/, char ** /*argv*/ ) fctc( sa2 ); std::array const sa3 = { 1, 2 }; - // fct(sa3); // not supported: cannot convert from '_Ty *' to 'T *' + // fct(sa3); // not supported: cannot convert argument 1 from 'const std::array' to 'vk::ArrayProxy' fctc( sa3 ); vk::ArrayProxy ap2 = sa0; assert( ap2.size() == 2 ); - // vk::ArrayProxy ap3 = sa1; // not supported: cannot convert from '_Ty *' to 'T *' + // vk::ArrayProxy ap3 = sa1; // not supported: cannot convert from 'std::array' to 'vk::ArrayProxy' // vk::ArrayProxy ap4 = sa2; // not supported: cannot convert from '_Ty *' to 'T *' - // vk::ArrayProxy ap5 = sa3; // not supported: cannot convert from '_Ty *' to 'T *' + // vk::ArrayProxy ap5 = sa3; // not supported: cannot convert from 'const std::array' to 'vk::ArrayProxy' vk::ArrayProxy ap6 = sa0; assert( ap6.size() == 2 ); @@ -134,7 +134,7 @@ int main( int /*argc*/, char ** /*argv*/ ) fctc( il1 ); std::initializer_list il2 = { 0, 1 }; - // fct(il2); // not supported: cannot convert from '_Elem *' to 'T *' + // fct(il2); // not supported: cannot convert argument 1 from 'std::initializer_list' to 'vk::ArrayProxy' fctc( il2 ); std::initializer_list const il3 = { 0, 1 }; @@ -142,13 +142,13 @@ int main( int /*argc*/, char ** /*argv*/ ) fctc( il3 ); std::initializer_list const il4 = { 0, 1 }; - // fct(il4); // not supported: cannot convert from 'const _Elem *' to 'T *' + // fct(il4); // not supported: cannot convert argument 1 from 'const std::initializer_list' to 'vk::ArrayProxy' fctc( il4 ); // vk::ArrayProxy ap14 = il1; // not supported: cannot convert from 'const _Elem *' to 'T *' - // vk::ArrayProxy ap15 = il2; // not supported: cannot convert from '_Ty *' to 'T *' - // vk::ArrayProxy ap16 = il3; // not supported: cannot convert from '_Ty *' to 'T *' - // vk::ArrayProxy ap17 = il4; // not supported: cannot convert from '_Ty *' to 'T *' + // vk::ArrayProxy ap15 = il2; // not supported: cannot convert from 'std::initializer_list' to 'vk::ArrayProxy' + // vk::ArrayProxy ap16 = il3; // not supported: cannot convert from 'const _Elem *' to 'T *' + // vk::ArrayProxy ap17 = il4; // not supported: cannot convert from 'const std::initializer_list' to 'vk::ArrayProxy' vk::ArrayProxy ap18 = il1; assert( ap18.size() == 2 ); diff --git a/tests/ArrayProxyNoTemporaries/ArrayProxyNoTemporaries.cpp b/tests/ArrayProxyNoTemporaries/ArrayProxyNoTemporaries.cpp index debf1f6..c17a53e 100644 --- a/tests/ArrayProxyNoTemporaries/ArrayProxyNoTemporaries.cpp +++ b/tests/ArrayProxyNoTemporaries/ArrayProxyNoTemporaries.cpp @@ -77,19 +77,19 @@ int main( int /*argc*/, char ** /*argv*/ ) assert(ap0.size() == 0); // Type - //fct(2); // not supported: attempting to reference a deleted function - //fctc(1); // not supported: attempting to reference a deleted function + // fct(2); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(int &&) + // fctc(1); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(int &&) // getInt() - //fct( getInt() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( T && value ) - //fctc( getInt() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( typename std::remove_const::type && value ) + // fct( getInt() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(int &&) + // fctc( getInt() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(int &&) int i0 = 1; fct(i0); fctc(i0); const int i1 = 2; - //fct(i1); // not supported: cannot convert argument 1 from 'const int' to 'vk::ArrayProxyNoTemporaries' + // fct(i1); // not supported: ArrayProxyNoTemporaries(const int &) fctc(i1); // count, T * @@ -99,7 +99,7 @@ int main( int /*argc*/, char ** /*argv*/ ) // count, T const* int const* i1p = &i1; - //fct({ 1, i1p }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' + // fct({ 1, i1p }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' fctc({ 1, i1p }); // std::array @@ -109,31 +109,31 @@ int main( int /*argc*/, char ** /*argv*/ ) // std::array std::array sa1 = { 0, 1 }; - //fct(sa1); // not supported: cannot convert argument 1 from 'std::array' to 'vk::ArrayProxyNoTemporaries' + // fct(sa1); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) fctc(sa1); // std::array const std::array const sa2 = { 1, 2 }; - //fct(sa2); // not supported: cannot convert from 'const int *' to 'int *' + // fct(sa2); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) fctc(sa2); // std::array const std::array const sa3 = { 1, 2 }; - //fct(sa3); // not supported: cannot convert argument 1 from 'const std::array' to 'vk::ArrayProxyNoTemporaries' + // fct(sa3); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) fctc(sa3); // getArray - //fct( getConstArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::array const && data ) - //fctc( getConstArray() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::array::type> const && data ) - //fct( getArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::array && data ) - //fctc( getArray() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::array::type, N> && data ) + // fct( getConstArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>(V &&) + // fctc( getConstArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>(V &&) + // fct( getArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>(V &&) + // fctc( getArray() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>(V &&) // from std::array constructors vk::ArrayProxyNoTemporaries ap2 = sa0; assert(ap2.size() == 2); - //vk::ArrayProxyNoTemporaries ap3 = sa1; // not supported: cannot convert from 'std::array' to 'vk::ArrayProxyNoTemporaries' - //vk::ArrayProxyNoTemporaries ap4 = sa2; // not supported: cannot convert from 'int *' to 'int *' - //vk::ArrayProxyNoTemporaries ap5 = sa3; // not supported: cannot convert from 'const std::array' to 'vk::ArrayProxyNoTemporaries' + // vk::ArrayProxyNoTemporaries ap3 = sa1; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) + // vk::ArrayProxyNoTemporaries ap4 = sa2; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) + // vk::ArrayProxyNoTemporaries ap5 = sa3; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) vk::ArrayProxyNoTemporaries ap6 = sa0; assert(ap6.size() == 2); @@ -151,18 +151,18 @@ int main( int /*argc*/, char ** /*argv*/ ) // std::vector const std::vector const sv1 = { 0, 1 }; - //fct(sv1); // not supported: cannot convert from 'const int *' to 'int *' + // fct(sv1); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>&>(V) fctc(sv1); vk::ArrayProxyNoTemporaries ap10 = sv0; assert(ap10.size() == 2); - //vk::ArrayProxyNoTemporaries ap11 = sv1; // not supported: cannot convert from 'int *' to 'int *' + // vk::ArrayProxyNoTemporaries ap11 = sv1; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>&>(V) // getVector - //fct( getConstVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::vector const && data ) - //fctc( getConstVector() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::vector::type, Allocator> const && data ) - //fct( getVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::vector && data ) - //fctc( getVector() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::vector::type> && data ) + // fct( getConstVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>>(V &&) + // fctc( getConstVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>>(V &&) + // fct( getVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>>(V &&) + // fctc( getVector() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries>>(V &&) vk::ArrayProxyNoTemporaries ap12 = sv0; assert(ap12.size() == 2); @@ -173,44 +173,44 @@ int main( int /*argc*/, char ** /*argv*/ ) fct({}); fctc({}); - //fct({ 0, 1 }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' - //fctc({ 0, 1 }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' + // fct({ 0, 1 }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' + // fctc({ 0, 1 }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' - //int a = 0; - //int b = 1; - //fct({ a, b }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' - //fctc({ a,b }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' + // int a = 0; + // int b = 1; + // fct({ a, b }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' + // fctc({ a,b }); // not supported: cannot convert argument 1 from 'initializer list' to 'vk::ArrayProxyNoTemporaries' auto il0 = { 0, 1 }; // -> std::initializer_list - //fct(il0); // not supported: cannot convert from 'const int *' to 'int *' + // fct(il0); // not supported: cannot convert from 'const int *' to 'int *' fctc(il0); std::initializer_list il1 = { 0, 1 }; - //fct(il1); // not supported: cannot convert from 'const int *' to 'int *' + // fct(il1); // not supported: cannot convert from 'const int *' to 'int *' fctc(il1); std::initializer_list il2 = { 0, 1 }; - //fct(il2); // not supported: cannot convert argument 1 from 'std::initializer_list' to 'vk::ArrayProxyNoTemporaries' + // fct(il2); // not supported: attempting to reference a deleted function : ArrayProxyNoTemporaries&>(V) fctc(il2); std::initializer_list const il3 = { 0, 1 }; - //fct(il3); // not supported: cannot convert from 'const int *' to 'int *' + // fct(il3); // not supported: cannot convert from 'const int *' to 'int *' fctc(il3); std::initializer_list const il4 = { 0, 1 }; - //fct(il4); // not supported: cannot convert argument 1 from 'const std::initializer_list' to 'vk::ArrayProxyNoTemporaries' + // fct(il4); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) fctc(il4); // getInitializerList - //fct( getConstInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::initializer_list const && list ) - //fctc( getConstInitializerList() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::initializer_list::type> const && list ) - //fct( getInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::initializer_list && list ) - //fctc( getInitializerList() ); // // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries( std::initializer_list::type> && list ) + // fct( getConstInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(const std::initializer_list &&) + // fctc( getConstInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(const std::initializer_list &&) + // fct( getInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(std::initializer_list &&) + // fctc( getInitializerList() ); // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries(std::initializer_list &&) - //vk::ArrayProxyNoTemporaries ap14 = il1; // not supported: cannot convert from 'const int *' to 'int *' - //vk::ArrayProxyNoTemporaries ap15 = il2; // not supported: cannot convert from 'std::initializer_list' to 'vk::ArrayProxyNoTemporaries' - //vk::ArrayProxyNoTemporaries ap16 = il3; // not supported: cannot convert from 'const int *' to 'int *' - //vk::ArrayProxyNoTemporaries ap17 = il4; // not supported: cannot convert from 'const std::initializer_list' to 'vk::ArrayProxyNoTemporaries' + // vk::ArrayProxyNoTemporaries ap14 = il1; // not supported: cannot convert from 'const int *' to 'int *' + // vk::ArrayProxyNoTemporaries ap15 = il2; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) + // vk::ArrayProxyNoTemporaries ap16 = il3; // not supported: cannot convert from 'const int *' to 'int *' + // vk::ArrayProxyNoTemporaries ap17 = il4; // not supported: attempting to reference a deleted function: ArrayProxyNoTemporaries&>(V) vk::ArrayProxyNoTemporaries ap18 = il1; assert(ap18.size() == 2); diff --git a/vulkan/vulkan.hpp b/vulkan/vulkan.hpp index 080985b..822b11c 100644 --- a/vulkan/vulkan.hpp +++ b/vulkan/vulkan.hpp @@ -308,88 +308,26 @@ namespace VULKAN_HPP_NAMESPACE # pragma GCC diagnostic pop # endif - template - ArrayProxy( std::array const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) + // Any type with a .data() return type implicitly convertible to T*, and a .size() return type implicitly + // convertible to size_t. The const version can capture temporaries, with lifetime ending at end of statement. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( const V & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - template ::value, int>::type = 0> - ArrayProxy( std::array::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( V & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - template - ArrayProxy( std::array & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::array::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxy( std::vector const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxy( std::vector::type, Allocator> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxy( std::vector & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxy( std::vector::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - -# if defined( VULKAN_HPP_SUPPORT_SPAN ) - template - ArrayProxy( std::span const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::span::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template - ArrayProxy( std::span & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::span::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} -# endif - const T * begin() const VULKAN_HPP_NOEXCEPT { return m_ptr; @@ -451,7 +389,8 @@ namespace VULKAN_HPP_NAMESPACE , m_ptr( &value ) {} - ArrayProxyNoTemporaries( T && value ) = delete; + template + ArrayProxyNoTemporaries( V && value ) = delete; template ::value, int>::type = 0> ArrayProxyNoTemporaries( typename std::remove_const::type & value ) VULKAN_HPP_NOEXCEPT @@ -506,117 +445,17 @@ namespace VULKAN_HPP_NAMESPACE template ::value, int>::type = 0> ArrayProxyNoTemporaries( std::initializer_list::type> && list ) = delete; - template - ArrayProxyNoTemporaries( std::array const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) + // Any type with a .data() return type implicitly convertible to T*, and a // .size() return type implicitly + // convertible to size_t. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxyNoTemporaries( V & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - template - ArrayProxyNoTemporaries( std::array const && data ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> const && data ) = delete; - - template - ArrayProxyNoTemporaries( std::array & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template - ArrayProxyNoTemporaries( std::array && data ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> && data ) = delete; - - template ::type>> - ArrayProxyNoTemporaries( std::vector const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxyNoTemporaries( std::vector const && data ) = delete; - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> const & data ) - VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> const && data ) = delete; - - template ::type>> - ArrayProxyNoTemporaries( std::vector & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxyNoTemporaries( std::vector && data ) = delete; - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> && data ) = delete; - -# if defined( VULKAN_HPP_SUPPORT_SPAN ) - template - ArrayProxyNoTemporaries( std::span const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::span::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template - ArrayProxyNoTemporaries( std::span & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::span::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} -# endif - const T * begin() const VULKAN_HPP_NOEXCEPT { return m_ptr;