- 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.");
}
std::optional?
у меня в С++ никаких интерфейсов нет.
Можно конечно концепт забабахать, чтобы cond1 было булом или его вообще не было.
Press X to doubt.
i1 это 1 бит... ну там выравнивание еще будет 1 байт макс
Что будет, если условно создавать IFace и передавать её так, чтобы компилятор не мог предсказать ещё использование? Тебе же придётся хранить информацию о наличии и/или значении cond1.
Если компилятор не норкоман и не умеет упаковывать кучу булов в 1 байт. Тогда да, для хранения состояния всей структуры понадобится 3 бита, но пирфоманс начнёт присасывать.
https://gcc.godbolt.org/z/1GYMh9T3Y (для наглядности говноcout заменён на православный «printf»):
«C++» успешно соптимизировал структуру в 0 байт.
Вот сразу бы так. Въебал плюс за использование тьюринг-полных операторов.
А по-моему норм будет: позиции битов фиксированные, and, or да test. Это же не вектор булов, где всё динамичное.
Просто здесь, как обычно, пацан возьмет Сишку.
В которой есть волшебное слово struct. И привычно сольет тупоскрипт питуха.
«Сишка» — язык для белых людей.
Какая жалкая, никчёмная структура. То ли дело "Nim", здесь структура весит целых 16 мегабайт! Не то, что ваши дистрофичные-булимичные целочки-структурочки.
Тут люди говорят, что «в 2021 веке воевать за сохранение 1 байта данных - это супер круто... а главное только сумасшедшие будут это делать :)»
Сишке почти 50 лет, но все эти т.н. «новые фичи» там уже давно реализованы )))
https://ideone.com/yp2bry
Edit: Ахаха. Или это для безопасности? В любом случае йажа обосралась — код ничего не выводит.
Приведение булева в булево?
print (a.cond0);
print (a.cond1 == undefined);
print (a.cond1);
// a.cond1?.value
print("done.");
}
>я вам принес новую фичу. называется опциональные поля в interface-ах. а твой с++ умеет так?
Пальнем-ка пулею в святую Русь!
В избяную, кондовую, толстозадую!
Эх, эх, без креста!