//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ // **** DO NOT EDIT THIS FILE!!! **** // This file is automatically generated by VariantDetail.h.in #ifndef vtk_m_internal_VariantDetail_h #define vtk_m_internal_VariantDetail_h #ifndef vtk_m_internal_Variant_h #error VariantDetail.h must be included from Variant.h #endif #include #include #include namespace vtkm { namespace internal { namespace detail { template struct VariantDummyReturn { VTKM_EXEC_CONT static inline ReturnType F() noexcept { return ReturnType{}; } }; template <> struct VariantDummyReturn { VTKM_EXEC_CONT static inline void F() noexcept {} }; template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl(brigand::list<>, vtkm::IdComponent, Functor&&, const void*, Args&&...) noexcept { // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } // clang-format off VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); case 18: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); case 18: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); case 18: return f(*reinterpret_cast(storage), std::forward(args)...); case 19: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { switch (index) { case 0: return f(*reinterpret_cast(storage), std::forward(args)...); case 1: return f(*reinterpret_cast(storage), std::forward(args)...); case 2: return f(*reinterpret_cast(storage), std::forward(args)...); case 3: return f(*reinterpret_cast(storage), std::forward(args)...); case 4: return f(*reinterpret_cast(storage), std::forward(args)...); case 5: return f(*reinterpret_cast(storage), std::forward(args)...); case 6: return f(*reinterpret_cast(storage), std::forward(args)...); case 7: return f(*reinterpret_cast(storage), std::forward(args)...); case 8: return f(*reinterpret_cast(storage), std::forward(args)...); case 9: return f(*reinterpret_cast(storage), std::forward(args)...); case 10: return f(*reinterpret_cast(storage), std::forward(args)...); case 11: return f(*reinterpret_cast(storage), std::forward(args)...); case 12: return f(*reinterpret_cast(storage), std::forward(args)...); case 13: return f(*reinterpret_cast(storage), std::forward(args)...); case 14: return f(*reinterpret_cast(storage), std::forward(args)...); case 15: return f(*reinterpret_cast(storage), std::forward(args)...); case 16: return f(*reinterpret_cast(storage), std::forward(args)...); case 17: return f(*reinterpret_cast(storage), std::forward(args)...); case 18: return f(*reinterpret_cast(storage), std::forward(args)...); case 19: return f(*reinterpret_cast(storage), std::forward(args)...); default: // If we are here, it means we failed to find the appropriate type in a variant VTKM_ASSERT(false && "Internal error, bad Variant state."); return VariantDummyReturn::F(); } } //clang-format on // Recurse for cases where Variant has more than 20 types VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, const void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { if (index < 20) { return VariantCastAndCallImpl( brigand::list{}, index, f, storage, args...); } else { return VariantCastAndCallImpl( brigand::list{}, index - 20, f, storage, args...); } } VTKM_SUPPRESS_EXEC_WARNINGS template VTKM_EXEC_CONT inline ReturnType VariantCastAndCallImpl( brigand::list, vtkm::IdComponent index, Functor&& f, void* storage, Args&&... args) noexcept(noexcept(f(std::declval(), args...))) { if (index < 20) { return VariantCastAndCallImpl( brigand::list{}, index, f, storage, args...); } else { return VariantCastAndCallImpl( brigand::list{}, index - 20, f, storage, args...); } } } } } // vtkm::internal::detail #endif //vtk_m_internal_VariantDetail_h