diff --git a/types.cc b/types.cc index 9909cc006d..aef7802d4c 100644 --- a/types.cc +++ b/types.cc @@ -1586,9 +1586,13 @@ struct validate_visitor { }; } -void abstract_type::validate(const fragmented_temporary_buffer::view& view, cql_serialization_format sf) const { - visit(*this, validate_visitor{view, sf}); +template +void abstract_type::validate(const View& view, cql_serialization_format sf) const { + visit(*this, validate_visitor{view, sf}); } +// Explicit instantiation. +template void abstract_type::validate<>(const single_fragmented_view&, cql_serialization_format) const; +template void abstract_type::validate<>(const fragmented_temporary_buffer::view&, cql_serialization_format) const; void abstract_type::validate(bytes_view v, cql_serialization_format sf) const { visit(*this, validate_visitor{single_fragmented_view(v), sf}); diff --git a/types.hh b/types.hh index 5bb19c8243..b1b4822c6f 100644 --- a/types.hh +++ b/types.hh @@ -525,7 +525,8 @@ public: data_value deserialize_value(bytes_view v) const { return deserialize_impl(single_fragmented_view(v)); }; - void validate(const fragmented_temporary_buffer::view& view, cql_serialization_format sf) const; + // Explicitly instantiated in .cc + template void validate(const View& v, cql_serialization_format sf) const; void validate(bytes_view view, cql_serialization_format sf) const; bool is_compatible_with(const abstract_type& previous) const; /*