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