Size: a a a

2020 April 20

z

zeroid in pro.cxx
/report
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
GoodBye
А там нужно делать обертку под atoi, atol, atoll
_Generic недоступен?
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Почему это https://en.cppreference.com/w/cpp/container/array/to_array сделано двумя перегрузками?
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
_Generic недоступен?
Я же написал, Си
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Так это для си
источник

SE

Stanislav Ershov in pro.cxx
Artöm Bakri Al-Sarmini
Почему это https://en.cppreference.com/w/cpp/container/array/to_array сделано двумя перегрузками?
из пейпера

However, the original version of to_array only takes an lvalue reference-to-array, and users reported[2] some issues regarding this design. The first issue is that it becomes very hackish to deduce only the array bound from a braced-init-list:

auto x = to_array<int const>({ 2, 4 });     // array<int, 2>
The language treats braced-init-list as a prvalue of an array type when deducing against reference-to-array. The code above adds const to coin a reference that can bind to such a prvalue, and leaves the const to be stripped later. Anyhow, the code isn’t doing what it says.

The second issue is that it does not support move-only elements, such as unique_ptr, no matter how you hack.

So we should add the rvalue-reference overload to fill this hole regarding type system.
источник

SE

Stanislav Ershov in pro.cxx
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Почему не сделать одну перегрузку с форвардом и remove_cvref_t?
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Почему не сделать одну перегрузку с форвардом и remove_cvref_t?
Да, уже разобрался. Хотя по всей видимости я снова делаю что-то не так

Код:
https://pastebin.com/GvG2K1Zx

Ошибка:
https://pastebin.com/E0rE1Cuk
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
GoodBye
Да, уже разобрался. Хотя по всей видимости я снова делаю что-то не так

Код:
https://pastebin.com/GvG2K1Zx

Ошибка:
https://pastebin.com/E0rE1Cuk
Работает ли тот же самый код, если вынести его из макроса?
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Работает ли тот же самый код, если вынести его из макроса?
Да, конечно
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Работает ли тот же самый код, если вынести его из макроса?
Исправил все ошибки, но главная осталась.
Код:
https://pastebin.com/F7tVi7NU

test.c:105:22: error: expected identifier or ‘(’ before ‘_Generic’
 105 | #define WRITE_INT(T) _Generic( (T),                   \
     |                      ^~~~~~~~
test.c:116:1: note: in expansion of macro ‘WRITE_INT’
 116 | WRITE_INT(int16_t)
     | ^~~~~~~~~
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
GoodBye
Исправил все ошибки, но главная осталась.
Код:
https://pastebin.com/F7tVi7NU

test.c:105:22: error: expected identifier or ‘(’ before ‘_Generic’
 105 | #define WRITE_INT(T) _Generic( (T),                   \
     |                      ^~~~~~~~
test.c:116:1: note: in expansion of macro ‘WRITE_INT’
 116 | WRITE_INT(int16_t)
     | ^~~~~~~~~
Внутри _Generic функции не вызываются
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Внутри _Generic функции не вызываются
Они же и не вызываются, это тоже define
источник

G

GoodBye in pro.cxx
Он выше
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Строка 106
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
_Generic подставляет одно из перечисленных выражений. То есть строку 114 нужно удалить
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Строка 106
Ну да, а как же тогда это сделать
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Artöm Bakri Al-Sarmini
Внутри _Generic функции не вызываются
Не то сказал, последнее смотри
источник

G

GoodBye in pro.cxx
)(T) -> )
источник