Re[2]: Вышел GPT 4
От: B0FEE664  
Дата: 31.03.23 09:54
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Пишут, что он феноменально хорош в программировании.

врут

Почему следующий код выводит false:
```

#include <iostream>
#include <type_traits>
#include <cstdint>

decltype(auto) fun1(int a) { std::string str = std::to_string(a); return (str); }
decltype(auto) fun2(int a) { std::string str = std::to_string(a); return str; }

int main()
{
     std::cout << std::boolalpha;
     std::cout << std::is_same_v<decltype(fun1), decltype(fun2)> << '\n';
    return 0;
}

```
?

Этот код выводит false, потому что decltype(fun1) и decltype(fun2) будут разными типами, даже если обе функции возвращают std::string.

Это происходит из-за использования decltype(auto), который определяет тип возвращаемого значения функции на основе ее выражения возврата. В функции fun1 скобки вокруг str возвращают значение по значению, в то время как функция fun2 возвращает str по значению.

Таким образом, тип возвращаемого значения для fun1 — это std::string, в то время как для fun2 — это std::string &. Поэтому decltype(fun1) и decltype(fun2) будут разными типами, даже если оба возвращают std::string.

И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.