- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
// @strict: true
interface IFace {
cond0: boolean;
cond1?: boolean;
}
function main() {
const a : IFace = { cond0: true };
print (a.cond0);
print (a.cond1 == undefined);
print (a.cond1);
// a.cond1?.value
print("done.");
}
ASD_77 19.12.2021 20:39 # 0
ASD_77 19.12.2021 20:40 # 0
Soul_re@ver 19.12.2021 20:41 # 0
std::optional?
ASD_77 19.12.2021 20:43 # 0
Soul_re@ver 19.12.2021 20:50 # 0
у меня в С++ никаких интерфейсов нет.
Можно конечно концепт забабахать, чтобы cond1 было булом или его вообще не было.
ISO 19.12.2021 20:45 # +1
ASD_77 19.12.2021 20:54 # 0
Soul_re@ver 19.12.2021 21:01 # +3
Press X to doubt.
ASD_77 19.12.2021 21:10 # 0
i1 это 1 бит... ну там выравнивание еще будет 1 байт макс
Soul_re@ver 19.12.2021 21:30 # +4
Что будет, если условно создавать IFace и передавать её так, чтобы компилятор не мог предсказать ещё использование? Тебе же придётся хранить информацию о наличии и/или значении cond1.
Если компилятор не норкоман и не умеет упаковывать кучу булов в 1 байт. Тогда да, для хранения состояния всей структуры понадобится 3 бита, но пирфоманс начнёт присасывать.
ISO 19.12.2021 21:49 # +5
https://gcc.godbolt.org/z/1GYMh9T3Y (для наглядности говноcout заменён на православный «printf»):
«C++» успешно соптимизировал структуру в 0 байт.
3.14159265 20.12.2021 04:09 # +4
Вот сразу бы так. Въебал плюс за использование тьюринг-полных операторов.
bormand 19.12.2021 22:52 # 0
bormand 19.12.2021 23:37 # 0
А по-моему норм будет: позиции битов фиксированные, and, or да test. Это же не вектор булов, где всё динамичное.
Steve_Brown 20.12.2021 11:50 # +1
ASD_77 20.12.2021 13:56 # 0
3.14159265 20.12.2021 04:13 # +7
Просто здесь, как обычно, пацан возьмет Сишку.
В которой есть волшебное слово struct. И привычно сольет тупоскрипт питуха.
«Сишка» — язык для белых людей.
JloJle4Ka 20.12.2021 04:23 # 0
Какая жалкая, никчёмная структура. То ли дело "Nim", здесь структура весит целых 16 мегабайт! Не то, что ваши дистрофичные-булимичные целочки-структурочки.
3.14159265 22.12.2021 23:47 # +2
Тут люди говорят, что «в 2021 веке воевать за сохранение 1 байта данных - это супер круто... а главное только сумасшедшие будут это делать :)»
3.14159265 20.12.2021 04:32 # +3
Сишке почти 50 лет, но все эти т.н. «новые фичи» там уже давно реализованы )))
https://ideone.com/yp2bry
JloJle4Ka 20.12.2021 04:40 # 0
3.14159265 20.12.2021 04:43 # +3
Edit: Ахаха. Или это для безопасности? В любом случае йажа обосралась — код ничего не выводит.
1024-- 21.12.2021 10:05 # +1
Rooster 20.12.2021 18:17 # +3
Приведение булева в булево?
bormand 21.12.2021 00:21 # 0
Fike 21.12.2021 00:46 # +2
gEKA6PbCKuu_nemyx 21.12.2021 15:25 # 0
Support 22.12.2021 19:59 # 0
print (a.cond0);
print (a.cond1 == undefined);
print (a.cond1);
// a.cond1?.value
print("done.");
}
>я вам принес новую фичу. называется опциональные поля в interface-ах. а твой с++ умеет так?
Пальнем-ка пулею в святую Русь!
В избяную, кондовую, толстозадую!
Эх, эх, без креста!