Подтвердить что ты не робот

Есть ли тип-черт для удаления верхнего уровня cv и ссылки сразу?

Я просто хочу знать, есть ли уже один стандарт. Я знаю, что легко сделать это сами.

// for C++03, use <tr1/type_traits> and std::tr1
#include <type_traits>

template<class T>
struct remove_toplevel{
  typedef typename std::remove_reference<T>::type noref_T;
  typedef typename std::remove_cv<noref_T>::type noref_nocv_T;
  typedef noref_nocv_T type;
};

но я думаю, что я что-то забыл или получил неправильный порядок, поэтому было бы неплохо иметь подготовленный, если он существует.

4b9b3361

Ответ 1

std::decay, я считаю, выполняет эту функцию.

Ответ 2

Я предпочитаю комбинировать две функции, так как он точно описывает, что такое намерение:

С++ 11 std::remove_cv<std::remove_reference<T>::type>::type

С++ 14 std::remove_cv_t<std::remove_reference_t<T>>

С++ 20 std::remove_cvref_t<T>