Rather than an error, as currently:
library(lubridate)
duration()
#> Error in duration(): No valid values have been passed to 'duration' constructor
period()
#> Error in period(): No valid values have been passed to 'period' constructor
interval()
#> Error in tz(start): argument "start" is missing, with no default
This makes more similar in behaviour to base R
integer()
#> integer(0)
factor()
#> factor(0)
#> Levels:
And this property is taken advantage of in vctrs
Rather than an error, as currently:
This makes more similar in behaviour to base R
And this property is taken advantage of in vctrs