diff --git a/include/fc/static_variant.hpp b/include/fc/static_variant.hpp index bb21416..3e8d908 100644 --- a/include/fc/static_variant.hpp +++ b/include/fc/static_variant.hpp @@ -359,32 +359,32 @@ public: template static typename visitor::result_type visit( tag_type tag, visitor& v, void* data ) { - static std::vector> wrappers = init_wrappers(); - FC_ASSERT( tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); + static auto wrappers = init_wrappers(); + FC_ASSERT( tag >= 0 && tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); return wrappers[tag]( v, data ); } template static typename visitor::result_type visit( tag_type tag, const visitor& v, void* data ) { - static std::vector> wrappers = init_wrappers(); - FC_ASSERT( tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); + static auto wrappers = init_wrappers(); + FC_ASSERT( tag >= 0 && tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); return wrappers[tag]( v, data ); } template static typename visitor::result_type visit( tag_type tag, visitor& v, const void* data ) { - static std::vector> wrappers = init_const_wrappers(); - FC_ASSERT( tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); + static auto wrappers = init_const_wrappers(); + FC_ASSERT( tag >= 0 && tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); return wrappers[tag]( v, data ); } template static typename visitor::result_type visit( tag_type tag, const visitor& v, const void* data ) { - static std::vector> wrappers = init_const_wrappers(); - FC_ASSERT( tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); + static auto wrappers = init_const_wrappers(); + FC_ASSERT( tag >= 0 && tag < count(), "Unsupported type ${tag}!", ("tag",tag) ); return wrappers[tag]( v, data ); }