LINUX.ORG.RU

История изменений

Исправление bugfixer, (текущая версия) :

Давайте еще раз

Мне таки надо дольше спать, и внимательней читать Ваши комментарии ;)

И в этом коде мне компилятор говорит, что в старом стандарте он не скомпилируется.

Если это действительно то что он делает, то я согласен - такой warning довольно бессмысленен. Изначально я исходил из того что разработчики clang более прагматичны и неправильно проинтерпретировал вот это:

Т.е. я компилируюсь именно в C++11, а меня предупреждают, что здесь у тебя несовместимость с С++98.

Конкретно с этим посылом:

имхо, было бы полезнее … Т.е. компилирую в C++98 и компилятор мне подсказывает, что со временем у меня будут проблемы (например, на использование имен auto_ptr или ключевых слов register и auto).

я согласен частично. Как по мне -так слом билда (что более новым, что старым компилятором) не так страшен. Гораздо опаснее hidden / silent изменения в поведении, причём далеко не всё можно предусмотреть / поймать юнит-тестами. Например что-то тяжелое было move-constructible, и вдруг перестало. И оно даже собирается и «работает», только медленней чем было. И хорошо если Вы это быстро заметите и оперативно поправите. Наверное люди вынужденные иметь дело с зоопарком компиляторов (а тем более - их не контролирующие) имеют мнение отличное от моего. Это я готов понять и принять.

ПыСы. На ещё более ранее:

Конкретно move() - видел.

Афигеть! И что этот move делал?

Это был метод custom legacy контейнера (похожего на std::vector<>, только хуже) который копировал элементы при capacity increase. Вы же никогда не просили чтобы оно было standalone function ;)

ПыПыСы. Кто-нибудь может мне объяснить как std::list::size() и std::list::splice() могут хотя-бы теоретически быть O(1) одновременно? cppreference.com врёт?

Исходная версия bugfixer, :

Давайте еще раз

Мне таки надо дольше спать и внимательней читать Ваши комментарии ;)

И в этом коде мне компилятор говорит, что в старом стандарте он не скомпилируется.

Если это действительно то что он делает, то я согласен - такой warning довольно бессмысленен. Изначально я исходил из того что разработчики clang более прагматичны и неправильно проинтерпретировал вот это:

Т.е. я компилируюсь именно в C++11, а меня предупреждают, что здесь у тебя несовместимость с С++98.

Конкретно с этим посылом:

имхо, было бы полезнее … Т.е. компилирую в C++98 и компилятор мне подсказывает, что со временем у меня будут проблемы (например, на использование имен auto_ptr или ключевых слов register и auto).

я согласен частично. Как по мне -так слом билда (что более новым, что старым компилятором) не так страшен. Гораздо опаснее hidden / silent изменения в поведении, причём далеко не всё можно предусмотреть / поймать юнит-тестами. Например что-то тяжелое было move-constructible, и вдруг перестало. И оно даже собирается и «работает», только медленней чем было. И хорошо если Вы это быстро заметите и оперативно поправите. Наверное люди вынужденные иметь дело с зоопарком компиляторов (а тем более - их не контролирующие) имеют мнение отличное от моего. Это я готов понять и принять.

ПыСы. На ещё более ранее:

Конкретно move() - видел.

Афигеть! И что этот move делал?

Это был метод custom legacy контейнера (похожего на std::vector<>, только хуже) который копировал элементы при capacity increase. Вы же никогда не просили чтобы оно было standalone function ;)

ПыПыСы. Кто-нибудь может мне объяснить как std::list::size() и std::list::splice() могут хотя-бы теоретически быть O(1) одновременно? cppreference.com врёт?