1.3, Alatar (ok), 22:08, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +5 +/– |
>>Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr;
Забавно... А чем плох NULL?
| |
|
2.7, с11 (?), 22:16, 14/08/2011 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Забавно... А чем плох NULL?
ключевое слово и макрос - разницу чувствуете?
| |
|
|
4.54, Mike Lee (?), 09:36, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
у него тип указатель. например есть перегруженная функция:
int foo(int a);
int foo(Type* a);
сейчас при вызове foo(0) будет неоднозначность и нужно будет 0 явно кастить. в 0х можно будет написать foo(nullptr) и компилятор разберется.
| |
|
5.55, Alatar (ok), 10:00, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Дык, а чем foo(nullptr) лучше, чем foo(NULL) ? Там ведь, вроде, каст к указателю уже встроен в макрос. Или нет?
| |
|
6.70, dq0s4y71 (??), 11:51, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
#ifndef __cplusplus
#define NULL ((void *)0)
#else /* C++ */
#define NULL 0
#endif /* C++ */
Я так думаю, nullptr - не просто указатель, а указатель на объект _любого типа_ - то, вместо чего сейчас используется костыль #define NULL 0.
| |
|
7.72, Alatar (ok), 12:09, 15/08/2011 [^] [^^] [^^^] [ответить] | +/– | Это откуда код Как я понял из приведённого выше документа, реализация сильно ра... большой текст свёрнут, показать | |
|
|
9.91, Alatar (ok), 13:55, 15/08/2011 [^] [^^] [^^^] [ответить] | +/– | Ну в том смысле, что макрос разворачивается препроцессором и компилятор в процес... текст свёрнут, показать | |
|
|
|
|
|
|
3.42, pavlinux (ok), 02:59, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> NULL не имеет типа.
Правильно, есть только низкий и высокий потенциал на проводнике,
а остальное флуд, так как у напряжения не бывает типов.
Точнее бывает, переменное и постоянное, но это по времени.
А человек существо тупое - оно ещё со статическим программирование
не разобралось, чего уж говорить про написание программ с модифицирующимися
во времени алгоритмами.
| |
|
4.114, Аноним (-), 19:30, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> а остальное флуд, так как у напряжения не бывает типов.
Ну просто некоторым хочется извратиться :). Господи, эти извращенцы даже для нуля с типом определиться не могут.
| |
|
|
|
1.6, с11 (?), 22:14, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
теперь еще до конца года ждать пока выпустят официальную документацию в виде книг
| |
|
2.139, Аноним (-), 16:03, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> теперь еще до конца года ждать пока выпустят официальную документацию в виде
> книг
А потом еще пару лет, пока Мейерс и Саттер литературу выпустят :)
| |
|
1.9, Аноним (-), 22:30, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Реализация ключевого слова "constexpr", позволяющего указать, что выражение (функция или конструктор) возвращает константу и данные выражения можно использовать как константы, например: "constexpr int GetFive() {return 5;}". В дальнейшем GetFive можно указать, например, при определении массива "int some_value[GetFive() + 7];";
Не понимаю, зачем это. Не проще ли использовать константы как константы?
| |
|
2.25, anonymous (??), 22:59, 14/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Очевидно для сверхзаумных констант, которые на препроцессоре выглядят нехорошо, и тип отслеживается
| |
2.27, zog (??), 23:14, 14/08/2011 [^] [^^] [^^^] [ответить]
| +7 +/– |
Я так понимаю, что для того, чтобы можно было удобно рассчитать какие-то константы во время компиляции. Вот есть у тебя несколько констант. И некоторые от них зависят от других сложным образом (т.е. в одну строчку не запишешь), просто пишешь constexpr функцию, которая всё это аккуратно считает и используешь её потом.
| |
2.31, inv (ok), 00:13, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Так написано же, для чего(в качестве примера)...
int val[getElementsCount()];
Сейчас так делать нельзя (это вам не жаба)
| |
|
1.10, Vernat (ok), 22:33, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
ну то на русском тока, на английском я думаю гораздо раньше выйдут. Наверняка у Мейерса, Саттер, Джосаттиса есть уже заготовки :). А вот Александреску вроде совсем на D свалил
| |
|
2.12, с11 (?), 22:37, 14/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
до конца года хотя бы на инглыше
на русском годика через два три
| |
|
1.16, iZEN (ok), 22:46, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
С++ переусложнённый язык. Boost — это вообще монстр макроопределений и шаблонов.
| |
|
2.21, с11 (?), 22:54, 14/08/2011 [^] [^^] [^^^] [ответить]
| +10 +/– |
> С++ переусложнённый язык.
не осилил, так и скажи
но всех тонкостей знать не обязательно
> Boost — это вообще монстр макроопределений и шаблонов.
библиотека != язык
ps
и да, java гадость ;)
| |
2.22, Lain_13 (?), 22:57, 14/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций. >_<
| |
|
3.26, anonymous (??), 23:03, 14/08/2011 [^] [^^] [^^^] [ответить]
| +5 +/– |
> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
> >_<
Вроде для быстрых собраных на на коленке компактных однострочников в стиле Pearl, [вброс]ну и вообще обфускация кода выйдет на новый уровень[/вброс]
| |
|
4.102, арсен (?), 16:21, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
>> >_<
> Вроде для быстрых собраных на на коленке компактных однострочников в стиле Pearl,
> [вброс]ну и вообще обфускация кода выйдет на новый уровень[/вброс]
В С++, на мой взгляд, не нужны.
| |
|
5.127, Аноним (-), 21:56, 15/08/2011 [^] [^^] [^^^] [ответить]
| +2 +/– |
Угу. И шаблоны тоже. Не говоря уже про классы. Зачем они вообще нужны? Структур вполне хватает.
| |
|
|
3.39, Аноним (-), 01:26, 15/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Лучше объясните мне какой прок от лямбда-функций.
Теоретики на них любят фапать. В остальном - можно и без них прекрасно обойтись. Хотя для написания неочевидного кода в стиле брейнфака - самое оно :)
| |
|
4.149, Michael Shigorin (ok), 22:52, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
>> Лучше объясните мне какой прок от лямбда-функций.
> Теоретики на них любят фапать.
Лоровские, что ли?
> В остальном - можно и без них прекрасно обойтись.
Без математики тоже можно программировать, несмотря на складывавшийся в совейское время стереотип. Только вот он не зря складывался.
Ммм... вот одни в школе алгебраическую задачку решают и пишут присваивание каждой строчкой, а другие в голове и пишут каждую вторую-третью строку продолжением (как чекпоинт для дебуга ;-). Так вот в программировании без возможности сделать делалку не получается прыгать через ступеньку, так и останешься кодером.
| |
|
5.157, Аноним (157), 16:30, 19/08/2014 [^] [^^] [^^^] [ответить]
| +/– |
Думаю не так много до окончательного разделения ( разраб/кодер ), т.к. для проверки своих мыслей и набросок исполняемого кода при разработке многих алгоритмов уже не нужно знание низкоуровневых языков, почему-то кажется что скоро появится профессия "интеллектуальный транслятор кода в ... из высокоуровневых систем разработки"
| |
|
|
3.75, anonymous (??), 12:34, 15/08/2011 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
> >_<
Можно писать вполне читаемые фанкторы:
find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );
На ISO/IEC-2003 придётся нарисовать класс с operator ()( int i ){ ... } внутри. По тексту (в старом написании) получится гораздо многословнее и будет гораздо менее очевидно --- что оно делает.
| |
|
4.79, Аноним (-), 12:49, 15/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Можно писать вполне читаемые фанкторы:
> find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );
Взаимоисключающие параграфы.
| |
|
5.88, anonymous (??), 13:26, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
>> Можно писать вполне читаемые фанкторы:
>> find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );
> Взаимоисключающие параграфы.
Т.е. Вы, сударь, утверждаете, что
struct foo
{
bool operator()( int i )
{ return f1(f0(i)); }
};
/* ... a lot of lines ... */
find_if( a.begin(), a.end(), foo() );
будет читаемей?
| |
|
4.80, dq0s4y71 (??), 12:50, 15/08/2011 [^] [^^] [^^^] [ответить]
| –3 +/– |
Читаемые? Ха-ха три раза. Зачем из С++ делать Питон? Может быть, лучше сразу писать на Питоне?
| |
|
5.111, Аноним (-), 18:20, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Лямбды не делают из C++ питона. А на питоне лучше вообще ничего не писать.
| |
|
6.121, dq0s4y71 (??), 20:27, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Ну, ладно, ладно, не делают... Неудачный я пример с Питоном привёл, согласен. Смысл был в том, что не надо приспосабливать микроскоп для забивания свай.
| |
|
7.122, Аноним (-), 20:46, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
Что за бред-то? Не умеете/не хотите использовать лямбды - не используёте, для вас в языке ничего не изменилось. А нормальные люди используют, и плевать они хотели на вас.
| |
|
|
5.150, Michael Shigorin (ok), 22:54, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> Зачем из С++ делать Питон?
При чём тут Питон и то, что Гвидо противится попыткам сделать из него этакий новый лисп?
| |
|
|
|
2.65, ezhik (?), 11:08, 15/08/2011 [^] [^^] [^^^] [ответить] | +2 +/– | Троли с LOR а делают вбросы на опеннете Было уже обсуждение Доболтались до тог... большой текст свёрнут, показать | |
|
3.78, dq0s4y71 (??), 12:46, 15/08/2011 [^] [^^] [^^^] [ответить] | +3 +/– | Если бы это было так, то ничем, кроме С , никто не пользовался бы Именно так ... большой текст свёрнут, показать | |
|
|
1.28, vbv (ok), 23:24, 14/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Добрый день!
>Большинство представленных в стандарте возможностей уже поддерживаются в таких
>компиляторах, как GCC
........
>Возможность вызывать одни конструкторы класса из других конструкторов этого же
>класса, что позволяет создавать конструкторы, использующие другие конструкторы
>без дублирования кода;
Хочу. Только вот у меня gcc на это дело ругается... Может ему чего-то включить нада?
Знающие люди подскажите PLS.
ps:
Если "Inheriting Constructors" это оно - тогда вопрос исчерпан.
pps: Разобрался.
Фича называется "Delegating Constructors" Но без патча gcc ее не ест.
Таким образом говорить про описание, видимо, рановато. Надо, чтобы еще и компиляторы всё это дело понимали.
| |
1.32, pavlinux (ok), 00:20, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> Кроме того, язык стал проще для изучения и освоения новичками.
Ага
cout << x << (2 << *y) << endl;
или для понимания:
cout << x shl (2 shl *y) << endl;
| |
|
2.37, Аноним (-), 00:45, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Precedence << - слева направо, так что
cout << x << (2 shl *y) << endl.
| |
|
3.44, pavlinux (ok), 05:00, 15/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
> cout << x << (2 shl *y) << endl.
Вставил цитирование "язык стал проще для изучения и освоения новичками. "
Мне надо:
x << (2 << *y)
1) 2 сдвинуть на то, что находиться по адреcу *y.
2) x сдвинуть на то, что получилось в предыдущем выражении.
3) вывести на консоль.
4) добавить конец строки.
в С++ нет оператора shl.
| |
|
4.74, ананим (?), 12:32, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
можно подумать в других проще.
вот так лучше что ли будет?
>{
> char hex[] = { '0', '1, '2', '3', '4', '5', '6',
> '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f };
> byte b = (byte) 0xf1;
> System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);
> }
http://khpi-iip.mipk.kharkiv.edu/library/oop/kart/05.html
офигенно понятно для новичка. что доказывает:
- что чтение доки лишним никогда не бывает;
- предметную область знать нужно;
- и не стоит писать плохо понятный код (где из твоего кода понятно что y не класс к примеру с переопределенным оператором?) в одну строчку, даже если С++ это позволяет (для кого инлаййн придумали? да даже макросы?)
| |
4.108, inv (ok), 16:42, 15/08/2011 [^] [^^] [^^^] [ответить]
| +4 +/– |
А если в алгебраическом выражении скобки забудешь, математика тоже станет "сложной и неудобной"?
| |
4.126, Аноним (-), 20:51, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> 1) 2 сдвинуть на то, что находиться по адреcу *y.
> 2) x сдвинуть на то, что получилось в предыдущем выражении.
> 3) вывести на консоль.
> 4) добавить конец строки.
Вы вообще не знаете языка, я правильно понял?
std::cout << (x << (2 << *y)) << std::endl;
> в С++ нет оператора shl
Вы сами первый его написали. Отвечающие любезно продолжили его использовать чтобы вам было понятнее.
| |
|
|
6.140, Аноним (-), 16:13, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Я порадуюсь, если у нее мозг раком встанет. Ибо блондинок не надо.
Пущай лучше она пишет ..в твиттер, например. :)
| |
|
7.158, Аноним (157), 16:43, 19/08/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Я порадуюсь, если у нее мозг раком встанет. Ибо блондинок не надо.
> Пущай лучше она пишет ..в твиттер, например. :)
К Сожалению C++ появился тогда когда люди решали не только проблему какой сделать синтаксис, но и проблему "сколько символов для реализации задачи понадобится" поэтому так и вышло, 90% кода который попадается не на c++ читается нормально, c++ постоянно ловишь себя на мысли что приходиться задумываться "что же в этом месте происходит".
| |
|
|
|
|
|
2.151, klalafuda (?), 01:00, 17/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> cout << x << (2 << *y) << endl;
> или для понимания:
> cout << x shl (2 shl *y) << endl;
А я своему коллеге по этому поводу скажу просто и ясно - иннах поспи и не выеживайся. Как проспишься - проходи, обсудим. Это если в реале. Ну а в теории - да, по настроению, буду сопли наматывать на локти лишь бы пофлеймить на пустом месте.
| |
|
1.36, Аноним (-), 00:42, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Два года уже весь продакшн код только на 0x. Без rvalue references/move semantics C++ вообще не нyжен.
| |
1.45, Аноним (-), 05:30, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Все ясно... Как в свое время ползли мобильники и смартфоны друг к другу. Так сейчас ползет C++ к Java. Ну осталось совсем немного подождать... Пока доползут...
| |
|
2.47, ezhik (?), 07:19, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Судя по тому, что в сомнительных комментариях к статье ничего кроме Java не упоминают, я делаю вывод, что народ ничего другого и не знает.
Сейчас что в школах/колледжах только Java преподают?
| |
|
3.159, Аноним (157), 16:46, 19/08/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Судя по тому, что в сомнительных комментариях к статье ничего кроме Java
> не упоминают, я делаю вывод, что народ ничего другого и не
> знает.
> Сейчас что в школах/колледжах только Java преподают?
просто при разработке синтаксиса Java уже знали о проблемах предшественников, хотя и своих немного добавили
| |
|
2.49, www2 (??), 07:38, 15/08/2011 [^] [^^] [^^^] [ответить]
| +2 +/– |
C++ станет таким же быстрым, как Java, а Java станет такой же надёжной и простой, как C++.
| |
2.87, anonymous (??), 13:17, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Все ясно... Как в свое время ползли мобильники и смартфоны друг к
> другу. Так сейчас ползет C++ к Java.
Скорее нет. Я вот в итоговом документе 'java-измов' не наблюдаю.
> Ну осталось совсем немного подождать... Пока доползут...
Из того, что сейчас оформилось, в процессе подготовки выкинули сильно лоббированный одной фирмой garbage collector.
| |
|
3.141, Аноним (-), 16:19, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> Из того, что сейчас оформилось, в процессе подготовки выкинули сильно лоббированный одной
> фирмой garbage collector.
И абсолютно правильно сделали. RAII и смарт-поинтеры и без gc справляются.
| |
|
|
1.51, ProfX (ok), 08:52, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Всем привет!
Я очень рад, что наконец стандарт С++11 утвержден, будем теперь только ждать доки и с удовольствием изучать. Мы застали новую ступень эволюции С++!
То что С++ становится похож на Java - не факт. Java не настолько гибка как С++, в то время как с появлением стандарта С++11 - C++ становится еще гибче чем был. Меня например очень радует появоение возможности создавать шаблоны с переменным числом аргументов.
| |
|
|
3.53, ProfX (ok), 09:19, 15/08/2011 [^] [^^] [^^^] [ответить]
| +3 +/– |
Нет, тут есть одна деталь.
С одной стороны:
новичку, изучить базовые конструкции С++ и начать ими пользоваться, думаю сейчас станет легче. Но это не сделает его професионалом, т.к. все эти нововведения (новая конструкция for, и пр.) - верхушка айсберга.
с другой стороны:
для того чтобы стать професионалом - теперь надо знать куда больше чем раньше - так как язык значительно расширился.
| |
|
|
|
2.60, anonymous (??), 10:52, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> А как насчет поддержки MinGW?
а кого волнует винда? у вас есть свой компилятор, от m$ — вот к ним и пишите, пусть поддержку пилят.
правда, учитывая, что C99 они не смогли осилить за более чем десять лет… ну, я бы не надеялся.
| |
|
3.67, vivac (?), 11:28, 15/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
учитывая что большенство плюшек С99 используется в linux ядре
то вопрос о том кто его проталкивает более чем очевиден
| |
|
4.77, ананим (?), 12:40, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
и что?
не, нужно оставновить развитие всяких сейпласплас и срочно пересесть на дотнет/моно?
зыж
а какое отношение С99 имеет к С++0X (да и просто С++) вообще, и к ядру линуха в частности?
опять ограничение знаний подвело "удачный" тролизм счастливого обладателя винды?
| |
|
5.85, vivacpp (?), 12:54, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
анонимы как всегда весь треид не читают
ишут подходящее выражение что бы вставить именно свое словцо?
| |
|
6.120, ананим (?), 19:53, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ха! вопрос про мингв (который таки и с++ и таки соотносится с сабжем) только таких умников как ты может привести к гцц специфик в ведре, который исключительно на С.
Пиши ищё. :D
| |
|
7.131, vivacpp (?), 00:35, 16/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
ты таки в пролете, потому что я отвечал на плюшки c99
и то, почему M$ особо не спешит их осваивать
в M$ на плаин C только ядро, и то не все, остальная часть драйверов итд на c++
поэтому закидоны насчет c99, идите пишите в комитет
этот стандарт развивают отдельно и с++ он никак не касается
| |
|
|
|
4.84, Аноним (-), 12:54, 15/08/2011 [^] [^^] [^^^] [ответить]
| +2 +/– |
> учитывая что большенство плюшек С99 используется в linux ядре
Да хоть в чьем ядре. Он тупо удобнее предшественников. А если до MS как до жирафа - пусть это будет их проблемой, а не моей.
| |
|
|
|
1.68, Аноним (-), 11:31, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Мой комент потерли. Ладно, задам вопрос по другому. :(
Сейчас параллельно с C++0X разрабатывается очередной стандарт программирования Си под кодовым названием C1X. Мне вот интересно, они их как нибудь будут синхронизировать, дабы исключить возможность появления несовместимости, или таки решили развиваться обособленно?
| |
1.92, gkv311 (ok), 13:56, 15/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Кто-нибудь понял зачем они wchar_t сделали независимым от char16_t и char32_t типом? Для того чтобы старые платформо-зависимые Unicode-ные велосипеды остались нетронутыми, но при этом и несовместимыми с новыми типами?
| |
|
2.95, barmaglot (??), 15:02, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
Да возрадуйтесь-же !!!
u8"I'm a UTF-8 string."
u"This is a UTF-16 string."
U"This is a UTF-32 string."
| |
|
|
4.97, barmaglot (??), 15:29, 15/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
... L"", produces a null-terminated array of type const wchar_t, where wchar_t is a wide-character. Neither literal type offers support for string literals with UTF-8, UTF-16, or any other kind of Unicode encodings.
Поддержка L"" никуда не делась и не денется, но L"" это сферический конь в вакууме. Из за этого постоянно приходилось внешние костыли/преобразователи в unicode использовать.
| |
|
5.104, gkv311 (ok), 16:28, 15/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Поддержка L"" никуда не делась и не денется, но L"" это
> сферический конь в вакууме. Из за этого постоянно приходилось внешние костыли/преобразователи
> в unicode использовать.
Если говорить о Linux, то там всё станет прозрачно - юзай Utf-8 везде и всё зашибись.
А в виндах WinAPI по прежнему на wchar_t, и чего с ним делать - непонятно.
То есть по-прежнему придётся писать для него костыли, ибо с char16_t оно 'не дружит', хотя по сути - оно и есть на виндах.
| |
|
|
|
|
|
|
|
4.113, phprus (ok), 19:24, 15/08/2011 [^] [^^] [^^^] [ответить]
| –2 +/– |
> >> atomics и mutexes --- это, мммм, совсем разные вещи.
> Спасибо К.О. А то я незнал что атомики и mutex разные вещи. Однако все "атомарные" операции реализуются mutex-ами за неимением атомарных типов/операций в языке.
Какие мутексты, какие атомарные типы/операции?!
Если мне память не изменяет, то уже лет 15+ известные мне архитектуры имеют соответствующие ассемблерные инструкции для атомарной работы с "переменными" в памяти.
На х86 атомарными инструкциями можно работать с 8,16,32 битовыми ячейками, на х86-64 еще и с 64битовыми.
А через мутексы атомарные операции реализуются только для типов, которые не подпадают под вышеназванные размеры для целевой платформы.
| |
|
5.132, inv (ok), 01:55, 16/08/2011 [^] [^^] [^^^] [ответить]
| –2 +/– |
Яволь TSL инструкция зовётся :) (test and set lock)
На этой инструкции базируются все синхронизационные механизмы, такие как мутексы и семафоры. Без неё это просто не работало бы, ибо нужно всегда быть уверенным что флажок отвечающий за занятость критической секции будет переписано только одним потоком.
| |
|
6.142, anonymous (??), 16:48, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> Без неё это просто не работало бы, ибо нужно всегда быть
> уверенным что флажок отвечающий за занятость критической секции будет переписано только
> одним потоком.
а мужики-то не знают
гуглите алгоритм дейкстры
| |
|
7.146, inv (ok), 18:51, 16/08/2011 [^] [^^] [^^^] [ответить] | +/– | Слышал звон, не знаю где он D Алгоритм дейкстры совершенно никак сюда не отн... большой текст свёрнут, показать | |
|
8.153, Вова (?), 10:05, 17/08/2011 [^] [^^] [^^^] [ответить] | +/– | Мне ваши сообщения напоминают пересказ содержимого обрывков старой газеты с гвоз... большой текст свёрнут, показать | |
|
9.156, inv (ok), 01:14, 18/08/2011 [^] [^^] [^^^] [ответить] | +/– | Читал я про этот алгоритм, газетка того же года из той же деревни, название запа... текст свёрнут, показать | |
|
|
|
|
|
4.144, anonymous (??), 16:50, 16/08/2011 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Спасибо К.О. А то я незнал что атомики и mutex разные вещи.
> Я к сожалению прямо
> сейчас в код gcc зелезть не могу, поэтому незнаю использованы ли
> старые грин-тред наработки для реализации атомиков, то-есть юзерлэнд или используются
> средства ОС. для меня актуальны *nix, соответственно , - POSIX.1c
не надо лезть в код gcc своими грязными руками.
они специально для вас выложили наружу инстриники.
которые, естественно, никакого отношения к libpthread не имеют.
| |
|
|
2.137, aborodin (??), 12:53, 16/08/2011 [^] [^^] [^^^] [ответить]
| +1 +/– |
> 5. Возможность вызывать одни конструкторы класса из других конструкторов этого же класса,
> что позволяет создавать конструкторы, использующие другие конструкторы без дублирования
> кода; (Наконец-то!!!)
Что наконец-то? Ещё одна ложка синтаксического сахара? Ничего не слипнется?
Дублирование кода можно избежать, если вынести его в отдельную функцию.
| |
|
3.145, Аноним (-), 18:40, 16/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
> Дублирование кода можно избежать, если вынести его в отдельную функцию.
Да, но.. Инициализация в отдельной функции не отменяет инициализацию в конструкторе. Двукратная инициализация может дорогого стоить.
| |
|
4.152, aborodin (ok), 09:42, 17/08/2011 [^] [^^] [^^^] [ответить]
| +/– |
>> Дублирование кода можно избежать, если вынести его в отдельную функцию.
> Да, но.. Инициализация в отдельной функции не отменяет инициализацию в конструкторе. Двукратная
> инициализация может дорогого стоить.
Ничего не понял. Какая двухкратная инициализация?
Пример:
// функция инициализации для избавления от дублирования кода
void foo:init (список параметров)
{
код_инициализации;
}
// первый конструктор
foo::foo (список_параметров)
{
init (аргументы);
}
// второй конструктор
foo::foo (список_параметров)
{
код;
init (аргументы);
код;
}
По новому стандарту, это будет выглядеть так:
// первый конструктор
foo::foo (список_параметров)
{
код_инициализации;
}
// второй конструктор
foo::foo (список_параметров)
{
код;
foo (аргументы); // первый конструктор
код;
}
Я правильно понимаю идею?
| |
|
|
|
1.154, Аноним (-), 10:41, 17/08/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
class Bar
{
члены класса
void initialize( аргументы );
public:
Bar( аргументы ); // конструктор
};
Bar::Bar( аргументы ) // инициализация членов класса значениями по-умолчанию, все равно что
: member1()
, member2()
// etc
{
initialize( аргументы ); // инициализация
}
void Bar::initialize( аргументы )
{
// что-то инициализируется
}
Здесь члены класса инициализируются два раза: один раз в конструкторе значениями по-умолчанию, второй раз - в методе initialize.
Теперь понятно?
| |
|