- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
struct Base { };
struct Class : Base
{
int mem{ 0 }; // init non-static data member
Class(int i)
: Base{} // init base class
, mem{i} // init member
{
int j{i}; // init local var
int k = int{0}; // init temporary
f( { 1 } ); // init function arg
int* p = new int{1}; // new init
// int k(int()); // most vexing parse, declares function
int k{ int{} }; // ok, declares variable
int i[4]{ 1,2,3,4 }; // init array
}
Class f(int i)
{
return { i }; // init return value
}
};
Class c{1}; // init global var
> return { i };
Чаем подавился.
PS Именно то что мне понравилось - работает.
https://ideone.com/xUi3Bl
Остальное бред какой-то. Вот не знаю плюсовать или нет.
Уже работает. Причем без ворнингов.
Та да. Это они серъезно. Пиздец эзотерика.
http://stackoverflow.com/questions/13267277/where-can-we-use-list-initialization
Но тут ебанулись пуще прежнего.
С++ удивляет меня каждый месяц. Сколько нового узнаю.
P.s. кто же победит в чемпионате по ебанутости синтаксиса и семантики? Кресты15 или перл7?
Конечно, иногда они должны быть частями цифр и переменных, но крестоблядской контекстно-зависимой грамматике не привыкать.
W и M,
R и Я, V и Л (тут надо чтоб Unicode поддерживался в базе, конечно же, ну и шрифт желательно "правильный" выбрать),
о_О и О_о (Возможны вариации),
p и d, b и d, q и р,
(: и :) (cамый не очевидный из представленных вариантов).
теперь будут ныть, что int func {}; молча объявит глобальную переменную, а не ошибку в паскале-функции с опущенными параметрами (спасет только то, что Тарас доберется до c++11 лет через 10)
http://liveworkspace.org/code/1F1UaY$3
Если на то пошло, на любом языке можно писать в той или иной степени нечитаемую кашу. Вопрос в том, насколько сложны правила синтаксического анализа. C++ лично для меня, как для человека далекого от темы, выглядит гораздо сложнее большинства других языков именно из-за всех этих частных случаев синтаксиса.
TRamStorage
Сразу понятно, что где что.
Было: int i = 0;
Все это для слабаков настоящий кресто-джедай будет теперь любую ручную инциализацию заменять Lisp программой которая возвращает нужное значение.
Cтало: int j { ( - (+ (* 0 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6)) 57) };
Профит же.
>заменять Lisp программой
Видя такой пиздец становится приятно вспоминать о том что есть именно lisp и js, с минималистичным универсальным синтаксисом, которые тем не менее умеют всё что и кресты, а то и больше.
js в новых стандартах хотят усложнить и испортить.
> int j { ( - (+ (* 0 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6)) 57) };
Та это ж легко читается, а когда скобки разные и одни и те же скобки обозначают разное в зависимости от контекста- вот труЪ С++.