Объявление `std::as_const` кажется слишком сложным.C++

Программы на C++. Форум разработчиков
Anonymous
Объявление `std::as_const` кажется слишком сложным.

Сообщение Anonymous »

Если мы посмотрим на объявление std::as_const, мы увидим следующее:
template< class T >
constexpr std::add_const_t& as_const( T& t ) noexcept;

Он возвращает std::add_const_t&, который, согласно cppreference.com, выглядит следующим образом:
template< class T >
using add_const_t = typename add_const::type;

А add_const выглядит так:
template
struct add_const
{
typedef const T type;
};

Итак, он объявляет структуру, содержащую только typedef для постоянной версии типа шаблона, и, когда as_const(T& t) возвращает t, он преобразует его в const через это определение типа.
Итак, почему std::as_const не может выглядеть просто так?
template
constexpr const T& as_const(T& t) noexcept
{
return t;
}

Я создал тестовый код:
template
constexpr const T& my_as_const(T& t) noexcept
{
return t;
}

struct foo
{
void m() { std::cout

Подробнее здесь: https://stackoverflow.com/questions/790 ... omplicated

Вернуться в «C++»