Cpp-driver performs typechecks during binding. To be more precise, it performs typechecks when user executes:
cass_statement_bind_*
cass_collection_append_*
cass_user_type_set_*
cass_tuple_set_*
The driver also allows users to define untyped (cass_{tuple/collection}_new) and typed (cass_{tuple/collection}_new_from_data_type) versions of tuples and collections. In case of binding to untyped tuples/collections, no type checks are performed.