`vec_ptype2()`

defines the coercion hierarchy for a set of related
vector types. Along with `vec_cast()`

, this generic forms the
foundation of type coercions in vctrs.

`vec_ptype2()`

is relevant when you are implementing vctrs methods
for your class, but it should not usually be called directly. If
you need to find the common type of a set of inputs, call
`vec_ptype_common()`

instead. This function supports multiple
inputs and finalises the common type.

```
# S3 method for logical
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for integer
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for double
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for complex
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for character
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for raw
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
# S3 method for list
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
vec_ptype2(x, y, ..., x_arg = "", y_arg = "")
```

x, y | Vector types. |
---|---|

... | These dots are for future extensions and must be empty. |

x_arg, y_arg | Argument names for |

For an overview of how these generics work and their roles in vctrs, see

`?theory-faq-coercion`

.For an example of implementing coercion methods for simple vectors, see

`?howto-faq-coercion`

.For an example of implementing coercion methods for data frame subclasses, see

`?howto-faq-coercion-data-frame`

.For a tutorial about implementing vctrs classes from scratch, see

`vignette("s3-vector")`

.

`vec_ptype()`

is applied to`x`

and`y`

`stop_incompatible_type()`

when you determine from the
attributes that an input can't be cast to the target type.