Suppose you have a template argument T
.
What are the differences between
add_cv_t<T>
andconst volatile T
add_const_t<T>
andconst T
add_volatile_t<T>
andvolatile T
add_lvalue_reference_t<T>
andT&
add_rvalue_reference_t<T>
andT&&
add_pointer_t<T>
andT*
?
Why should I use add_rvalue_reference_t<T>
instead of T&&
for example. Are there any rules when to choose which?