Сегодня ночью вышел долгожданный GCC 4.7, выпуск которого приурочен к 25-летию проекта.
Долгожданным этот выпуск является прежде всего для программистов C++, так как несет с собой обширную поддержку нового стандарта С++11.
Наиболее заметные нововведения:
Расширенный синтаксис friend:
template<class W>
class Q
{
static const int I = 2;
public:
friend W;
};
struct B
{
int ar[Q<B>::I];
};
Ключевые слова final и override
struct B {
virtual void f() const final;
virtual void f(int);
};
struct D : B {
void f() const; // error: D::f attempts to override final B::f
void f(long) override; // error: doesn't override anything
void f(int) override; // ok
};
struct E final { };
struct F: E { }; // error: deriving from final class
Инициализация не статических членов.
struct A {
int i = 42;
} a; // initializes a.i to 42
Пользовательские литералы.
constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
long double pi = 180.0_degrees;
Alias-declarations. (Не знаю как перевести на русский)
template <class T> using Ptr = T*;
Ptr<int> ip; // decltype(ip) is int*
Делегирование конструкторов (Ура, ура, самая вкусняшка!)
struct A {
A(int);
A(): A(42) { } // delegate to the A(int) constructor
};
A также значительное улучшение поддержки standard library для C++11.
Остальные изменения и более подробную информацию по релизу можно посмотреть здесь
Автор: Vass