// Copyright(c) 2018, NVIDIA CORPORATION. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // VulkanHpp Samples : ArrayProxy // Compile test on using vk::ArrayProxy #include "vulkan/vulkan.hpp" #include void fct(vk::ArrayProxy /*ap*/) {} void fctc(vk::ArrayProxy /*ap*/) {} int main(int /*argc*/, char ** /*argv*/) { try { // nullptr_t fct(nullptr); fctc(nullptr); vk::ArrayProxy ap0 = nullptr; assert(ap0.size() == 0); // Type //fct(2); // not supported: cannot convert from 'const int *' to 'T *' fctc(1); int i0 = 1; fct(i0); fctc(i0); const int i1 = 2; //fct(i1); // not supported: cannot convert from 'const int *' to 'T *' fctc(i1); // count, T * int* i0p = &i0; fct({ 1, i0p }); fctc({ 1, i0p }); // count, T const* int const* i1p = &i1; //fct({ 1, i1p }); // not supported: cannot convert from 'const int *' to 'T *' fctc({ 1, i1p }); // std::array std::array sa0 = { 0, 1 }; fct(sa0); fctc(sa0); // std::array const std::array sa1 = { 0, 1 }; //fct(sa1); // not supported: cannot convert from '_Ty *' to 'T *' fctc(sa1); std::array const sa2 = { 1, 2 }; //fct(sa2); // not supported: cannot convert from 'const _Ty *' to 'T *' fctc(sa2); std::array const sa3 = { 1, 2 }; //fct(sa3); // not supported: cannot convert from '_Ty *' to 'T *' fctc(sa3); vk::ArrayProxy ap2 = sa0; assert(ap2.size() == 2); //vk::ArrayProxy ap3 = sa1; // not supported: cannot convert from '_Ty *' to 'T *' //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 ap6 = sa0; assert(ap6.size() == 2); vk::ArrayProxy ap7 = sa1; assert(ap7.size() == 2); vk::ArrayProxy ap8 = sa2; assert(ap8.size() == 2); vk::ArrayProxy ap9 = sa3; assert(ap9.size() == 2); // std::vector std::vector sv0 = { 0, 1 }; fct(sv0); fctc(sv0); std::vector const sv1 = { 0, 1 }; //fct(sv1); // not supported: cannot convert from 'const _Ty *' to 'T *' fctc(sv1); vk::ArrayProxy ap10 = sv0; assert(ap10.size() == 2); //vk::ArrayProxy ap11 = sv1; // not supported: cannot convert from '_Ty *' to 'T *' vk::ArrayProxy ap12 = sv0; assert(ap12.size() == 2); vk::ArrayProxy ap13 = sv1; assert(ap13.size() == 2); // std::initializer_list fct({}); fctc({}); //fct({ 0, 1 }); // not supported: cannot convert from 'const _Elem *' to 'T *' fctc({ 0, 1 }); int a = 0; int b = 1; //fct({ a, b }); // not supported: cannot convert from 'const _Elem *' to 'T *' fctc({ a,b }); auto il0 = { 0, 1 }; // -> std::initializer_list //fct(il0); // not supported: cannot convert from 'const _Elem *' to 'T *' fctc(il0); std::initializer_list il1 = { 0, 1 }; //fct(il1); // not supported: cannot convert from 'const _Elem *' to 'T *' fctc(il1); std::initializer_list il2 = { 0, 1 }; //fct(il2); // not supported: cannot convert from '_Elem *' to 'T *' fctc(il2); std::initializer_list const il3 = { 0, 1 }; //fct(il3); // not supported: cannot convert from 'const _Elem *' to 'T *' fctc(il3); std::initializer_list const il4 = { 0, 1 }; //fct(il4); // not supported: cannot convert from 'const _Elem *' to 'T *' 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 ap18 = il1; assert(ap18.size() == 2); vk::ArrayProxy ap19 = il2; assert(ap19.size() == 2); vk::ArrayProxy ap20 = il3; assert(ap20.size() == 2); vk::ArrayProxy ap21 = il4; assert(ap21.size() == 2); } catch (vk::SystemError const& err) { std::cout << "vk::SystemError: " << err.what() << std::endl; exit(-1); } catch (...) { std::cout << "unknown error\n"; exit(-1); } return 0; }