LINUX.ORG.RU

Ответ на: комментарий от HerrWeigel

Спасибо. Сходу даже не нагуглил.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

по мне так это мелкая синтаксическая пудра, даже не крупинка сахара...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymous

Это просто костыль для ловли исключений в списке инициалиации.

Спасибо, я про это даже не подумал.

anonymous
()
Ответ на: комментарий от zamazan4ik

Интересно, что от плясок с шаблонами такого эффекта нет. Про шаблоны знают все, и почти все считают их магией. А тут, видимо, эффект от простоты.

Ещё аналогичный эффект вызывает вот такой код:

#include <stdio.h>

int main(int $argc, char *argv[]) {
  int $a = printf("%d\n", $argc);
  printf("%d\n", $a);
  return 0;
}

Если человек немного знает Perl (или PHP), он сначала пропускает $a. Переменная и переменная, все так объявляются. Потом настигает осознание, что это совсем не Perl.

i-rinat ★★★★★
()
Ответ на: комментарий от pon4ik

Это расширение GCC. Clang его тоже умеет. В https://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html написано, что многие древние реализации C-компиляторов допускали такие имена, поэтому в GCC тоже решили поддерживать.

i-rinat ★★★★★
()
Ответ на: комментарий от zamazan4ik

Can be composed of letters, numbers, underscore, universal character names and implementation defined characters

Лол... Стандарт такой стандарт. Всеми силами пытаются родить 100500 несовместимых компиляторов.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Читал про это совсем не в Страутсрупе. А в какой-то тонкой книжке по плюсам. как раз в разделе про исключения упоминали что можно так вызовы оборачивать.

anonymous
()
Ответ на: комментарий от anonymous

можно пример со списком инициализации, уже лет 10 плюсами не пользуюсь, не могу сходу сообразить, просто для заметки?..

emptykiev
()
Ответ на: комментарий от emptykiev
int * new_int( )
{
    throw std::runtime_error("uups!");
}


class test {
public:
    test( ) try
        :data_(new_int( ))
    {

    }
    catch( const std::exception &ex )
    {
        std::cerr << ex.what( );
    }

    int *data_;
};

Кстати после этого исключение полетит дальше, ибо объект не создался. так что

    try {
        test t;
    } catch( const std::exception &ex ) {
        std::cerr << ex.what( );
    }
uups!uups!

anonymous
()
Ответ на: комментарий от emptykiev

вообщем довольно занимательно, С++ не перестанет удивлять никогда, наверное.

emptykiev
()
Ответ на: комментарий от i-rinat

Clang его тоже умеет.

С флагом pedantic не соберется.

andreyu ★★★★★
()
Ответ на: комментарий от RazrFalcon

При чем тут стандарт. Может в стандарте нужно описать, что должен делать компилятор языка в определенное время суток?

andreyu ★★★★★
()
Ответ на: комментарий от i-rinat

написано, что многие древние реализации C-компиляторов допускали такие имена, поэтому в GCC тоже решили поддерживать.

Всегда думал, что это ради (Open)VMS делалось.

anonymous
()

Сегодня совершенно случайно узнал, что код ниже является абсоютно корректным C++ кодом.

Из 1C перекатываешься?

anonymous
()

Что это такое и как с этим жить?

Представляю, какой шок ты испытаешь, когда узнаешь, что member functions могут быть не только cv-, а ещё и reference-qualified.

anonymous
()
Ответ на: комментарий от RazrFalcon

Вы, наверное, никогда не видели C++ программ с русскими идентификаторами (названиями классов, методов/функций, переменных)?

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Ну это C++11 фича, о ней можно не знать.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

При том, что стандарт явно указывает на то, что идентификатор может содержать любые символы.

Где вы это узрели?
Can be composed of letters, numbers, underscore

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Наверное в описании формата elf ...

cvv ★★★★★
()
Ответ на: комментарий от RazrFalcon

Стандарт такой стандарт. Всеми силами пытаются родить 100500 несовместимых компиляторов.

Предположу, что так просто узаконили сложившиеся практики.

DarkEld3r ★★★★★
()
Ответ на: комментарий от anonymous

Я про это читал тоже не в Страуструпе, а в «Moving from C to C++: Discussing Programming Problems»

fsb4000 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.