Можно ли использовать переменные-члены для инициализации других членов в списке инициализации?

Рассмотрим следующую (упрощенную) ситуацию:

class Foo
{
private:
    int evenA;
    int evenB;
    int evenSum;
public:
    Foo(int a, int b) : evenA(a-(a%2)), evenB(b-(b%2)), evenSum(evenA+evenB)
    {
    }
};

Когда я создаю экземпляр Foo следующим образом:

Foo foo(1,3);

тогда evenA равен 0, evenB равен 2, но будет ли evenSum инициализирован равным 2?

Я попробовал это на моей текущей платформе (iOS), и, похоже, это работает, но я не уверен, является ли этот код переносимым.

Спасибо за помощь!

30
задан Pontomedon 23 May 2012 в 19:27
поделиться