http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/#mailing2008-06
сделано было довольно много.
текущий черновик стандарта здесь:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf
что было добавлено по сравнению с прошлой версией:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2692.html
что было добавлено со времен стандарта 2003-го года:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2652.html
Наконец-то будет можно использовать локальные типы в качестве аргументов шаблона (т.е. писать простые функторы и стражи прямо внутри функций):
template <class T> class X { };
template <class T> void f(T t) { }
struct {} unnamed_obj;
void f() {
struct A { };
enum { e1 }; typedef struct {} B;
B b;
X<A> x1; // OK
X<A*> x2; // OK
X<B> x3; // OK
f(e1); // OK
f(unnamed_obj); // OK
f(b); // OK
}
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
Почти все ситуации, которые сейчас трактуются как ошибки при выводе шаблонных параметров из выражений, будут трактоваться в рамках SFINAE:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
многопоточность
— дополнена семантика многотопочного исполнения кода глава 1.10. Как вы помните, ранее изничтожили великие и ужасные точки следования (которые часто использовались гуру во время флейма для демонстрации полной профессиональной несостоятельности собеседников), и ввели понятия "до" и "после" — так вот их дополнили понятиями "до, но в другом потоке" и зависимости между данными (data dependency).
— внесены соответствующие изменения в библиотеку атомарных операций (функция ). Напомню, это глава 29 нового стандарта и включает в себя атомарные типы std::atomic<T>, lock-free, атомарные флаги, и добрую сотню функций типа atomic_store, atomic_fetch, atomic_exchange, atomic_is_lock_free (!), atomic_fence и т.д, и шесть вариантов упорядочения операций по отношению к памяти (memory ordering):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
— инициализация в многопоточном окружении:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
— неявные преобразования атомарных типов в аналогичные неатомарные rvalue, заключаются в предоставлении соответствующего оператора преобразования, объявленного volatile:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2514.html
— атомарность shared_ptr, в том же виде, что и для других типов:
template<class T> bool atomic_is_lock_free( shared_ptr<T> const * p );
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2674.htm
— требования по thread safety для стандартных функций (включая методы стандартных контейнеров):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
initializer lists (не знаю, как перевести... "инициализация списком"? "списочная инициализация"?) теперь добавлены в черновик стандарта.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
добавлена соответствующая инициализация для стандартных контейнеров (только не в виде соответствующих конструкторов конкретных контейнеров, как предлагалось, а в виде общих требований в 23.1):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2679.pdf
Поскольку поддержки сборки мусора в этой редакции стандарта не будет, сейчас добавили только необходимые базовые вещи для сборки мусора, а именно — функции для регистрации указателей: declare_reachable/undeclare_reachable (для одного указателя), declare_no_pointers/undeclare_no_pointers (для области памяти), и get_pointer_safety, которая расскажет, как реализация относится к указателям, которые не были явно помечены как reachable.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
Все, относящееся к POSIX, отныне и навсегда будет жить в пространстве имен ::posix (а не ::std и не ::std::posix, как предполагалось ранее)
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2667.htm
Появилось пространство имен с замечательным названием std::chrono (глава 20.8) Используется во всех функциях ,связанных со временем, например, std::condition_variable::timed_wait (которая, кстати, распалась на wait_until (c таймаутом и условием) и wait_for (просто с таймаутом)):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm
Добавили несколько долгожданных алгоритмов типа copy_if:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2666.pdf
разрешили в замыканиях/лямбдах менять "замкнутые" объекты: по умолчанию их менять будет нельзя, если лямбде разрешается их менять, надо будет написать в объявлении лямбды mutable:
int x;
[x]() { ++x; } // error, x is const
[x]() mutable { ++x; } // OK
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2658.pdf
null_ptr можно будет конвертировать из литерального нуля (как сейчас), его можно будет конвертировать в bool (но не везде, а только в инициализаторах — пока что тестируется разработчиками компиляторов) и применять reinterpret_cast для конвертации в целочисленный тип:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2656.htm
дальнейшая полировка вставки в контейнер конструированием элемента прямо в контейнере (emplace):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2680.pdf
фьючерсы (или как там они называются по-русски, короче, std::unique/shared_future, std::promise):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2671.html
boost::noncopyable. Интерфейс предлагается такой же, что и в бусте, а это означает, что будут проблемы с оптимизацией пустых базовых классов в случае множественного наследования. Непонятно, как это предполагается решать.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2675.pdf
Thread local storage:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
Дальнейшая полировка концепций:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2676.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2677.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2694.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2695.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2696.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2654.pdf (аллокаторы)
предварительное объявление перечислений (без необходимости указывать все возможные значения, но с необходимостью указывать тип представления):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2687.pdf
имена файлов с широкими символами (наконец-то):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2683.html
соображения по обратной совместимости с предыдущей версией стандарта С++:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers
/2008/n2693.html
соображения по thread safety стандартных строк (фактически, запрет реализаций, использующих copy-on-write):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2668.htm
протокол заседаний (очень занимательное чтиво):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2697.html