Забыл рассказать про важный момент, если в decltype указать выражение, то это выражение не будет выполняться, а лишь выведется тип выражения. Например здесь удаления элемента не будет: std::set s {1,2,3}; decltype(s.erase(s.begin())); или вот например: int x = 42; decltype(x++);
13:00 Для return(x + 5) будет int, а не ссылка на int. 13:21 decltype для любых именованных объектов даст T, а не ссылку на T. Если завести, например, вектор структур, то decltype от обращения по индексу к вектору даст ссылку на структуру. Но если после обращения по индексу к вектору далее обратиться к полю структуры, которое, например, имеет тип int, то decltype от этого выражения даст int, а не ссылку на int.
Привет, конкретно в этом примере использование auto&& и decltype(auto) действительно даст один и тот-же результат, однако посмотрим на такой пример: int getInt() { return 10; } int main() { auto&& uref = getInt(); // int&& decltype(auto) da = getInt(); // int }
Насколько же сильно все испортилось. Я достаточно давно не прикасался к плюсам, но видеть подключения буста только для понимания, какой же тип на самом деле - треш. Впихивание новых конструкций без фактического рефакторинга самого языка делает его абсолютно нечитаемым.
да автор прост кринжует на самом деле. и без буста можно, да и надо ли? любой LSP современный это делает и в дополнение с любой ide или текстовым редактором отрисует тип. А на сколько вы долго к плюсам не прикасались?) С++ 0х сущесвует очень давно, официально аж с 11 года, нуежто более 13 лет на плюсах не писали?)
Забыл рассказать про важный момент, если в decltype указать выражение, то это выражение не будет выполняться, а лишь выведется тип выражения.
Например здесь удаления элемента не будет:
std::set s {1,2,3};
decltype(s.erase(s.begin()));
или вот например:
int x = 42;
decltype(x++);
Спасибо за видео, после него я понял почему rust такой популярный :)
13:00 Для return(x + 5) будет int, а не ссылка на int.
13:21 decltype для любых именованных объектов даст T, а не ссылку на T.
Если завести, например, вектор структур, то decltype от обращения по индексу к вектору даст ссылку на структуру.
Но если после обращения по индексу к вектору далее обратиться к полю структуры, которое, например, имеет тип int, то decltype от этого выражения даст int, а не ссылку на int.
Отличные гайды, спасибо за видео
Пол года университета в этом канале 👍👍👍. Подписывайтесь
C++ развивается, а методов выстрелить себе в ногу меньше не становится.
Молодец, полезно!
Удачи!
Здравствуйте. А мы не можем использовать универсальную ссылку auto&& вместо decltype(auto) для определения типа возвращаемого значения? (9:30)
Привет, конкретно в этом примере использование auto&& и decltype(auto) действительно даст один и тот-же результат, однако посмотрим на такой пример:
int getInt()
{
return 10;
}
int main()
{
auto&& uref = getInt(); // int&&
decltype(auto) da = getInt(); // int
}
@@PolevoysProgramming Спасибо!
Плюсы круты. После 14 он стал комфортным
полезнл
Насколько же сильно все испортилось. Я достаточно давно не прикасался к плюсам, но видеть подключения буста только для понимания, какой же тип на самом деле - треш. Впихивание новых конструкций без фактического рефакторинга самого языка делает его абсолютно нечитаемым.
Ждем С+++ без багажа костылей и убогих конструкций
да автор прост кринжует на самом деле. и без буста можно, да и надо ли? любой LSP современный это делает и в дополнение с любой ide или текстовым редактором отрисует тип.
А на сколько вы долго к плюсам не прикасались?) С++ 0х сущесвует очень давно, официально аж с 11 года, нуежто более 13 лет на плюсах не писали?)
Можно использовать typeid(...) просто из стандарта
какая же мешанина этот c++. как будто собрали множество языков и вылепили ужасного голема
имхо лучше чем php)
Так и есть. Попробуйте Rust, тут всё почти чисто)))