Pull to refresh

Релиз GCC-4.7

Reading time 1 min
Views 4.7K
Сегодня ночью вышел долгожданный 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. (Не знаю как перевести на русский)
Расширенный typedef для шаблонов. Спасибо kharvd за уточнение.
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.

Остальные изменения и более подробную информацию по релизу можно посмотреть здесь

UPD: 24.03.2012 Появилась сборка в sid ветке Debian.
Tags:
Hubs:
+56
Comments 33
Comments Comments 33

Articles