Ответ 1
С++ 11 требует выполнения list::size()
в постоянное время. GCC сделал это возможным с помощью добавления размера в качестве элемента данных. GCC не сделал этого для режима С++ 98, потому что это нарушило бы двоичную совместимость.
Не смешивайте код, скомпилированный в режиме С++ 98, с кодом, скомпилированным в режиме С++ 11. Это не работает.
Обновить. По-видимому, люди GCC изменили свое мнение, а соответствие С++ 11 менее важно, чем поддержка совместимости, поэтому list::size()
больше не будет выполняться в течение GCC 4.7.2. Он будет в будущей версии как в режимах С++ 98, так и в С++ 11.