LINUX.ORG.RU

Продолжаю удивляться C++.

 


0

2

Добрый день, уважаемые разработчики!

Есть такой замечательный язык C++ со своими правилами, парадигмами, хорошими и плохими практиками, а также с хорошими и плохими библиотеками. И вот есть такое правило, что константные объекты менять нельзя. Казалось бы, правило логичное, и хорошие мальчики и девочки должны ему прилежно следовать.

Однако существует ещё такая библиотека, как Boost.Exception. В ней есть такая возможность, как дополнять объекты исключения произвольной информацией с помощью оператора <<. Причём, дополнять можно не просто объекты, а объекты константные. Давайте посмотрим API:

template <class E, class Tag, class T>
    E const & operator<<( E const & x, error_info<Tag,T> const & v );

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

const там только потому, что в противном случае, в функцию можно было бы передать только lvalue, что не очень подходит для исключений, где объекты как правило создаются и используются без каких-либо промежуточных переменных. (C) anonymous



Последнее исправление: azelipupenko (всего исправлений: 3)

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

А можно просто не пытаться коммитить в проект, идеологию и процессы которого ты не разделяешь.

Ну так коммитят же как раз те, кто разделяет идеологию и процессы. И получают по шапке за любовь к прекрасному время от времени. Ибо нечего от реальности отрываться.

В твоем случае, можно вообще засылать свои патчи только маме – она никогда плохого не скажет.

Я шлю отчёты о багах в Microsoft. Они мне ещё никогда плохого не сказали.

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

В твоем случае, можно вообще засылать свои патчи только маме – она никогда плохого не скажет.

Я шлю отчёты о багах в Microsoft. Они мне ещё никогда плохого не сказали.

А, ну и кстати. Хорошо, что нельзя туда им патчи слать - кода нет, нечего патчить. А, как известно, меньше кода - меньше проблем. Нет, люблю я Windows искренне. Только сейчас осознал какая это хорошая для жизни система.

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

Почему из std::move можно, а из этого оператора нельзя?

тупанул, все ок

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

А, ну и кстати. Хорошо, что нельзя туда им патчи слать - кода нет, нечего патчить. А, как известно, меньше кода - меньше проблем. Нет, люблю я Windows искренне. Только сейчас осознал какая это хорошая для жизни система.

На винфак и RSDN

pylin ★★★★★
()
18 февраля 2018 г.

Нормальный человек, дойдя до подобного вопроса, закрывает для себя C++, так как понимает, что это нагромождение шлакоблоков для работы не пригодно. Не, ну если ты хочешь получить геморрой и тревожное расстройство, то вперед. Но я бы не рекомендовал.

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

Не, ну если ты хочешь получить геморрой и тревожное расстройство, то вперед. Но я бы не рекомендовал.

Ну ты то сам пишешь на цепепе? :-) Или ты просто знаешь цепепе, но не пишешь на нём? :-)

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