Инициализация константного члена в объявлении класса в C ++

В PHP и C # константы могут быть инициализированы по мере их объявления:

class Calendar3
{
    const int value1 = 12;
    const double value2 = 0.001;
}

У меня есть следующее объявление C ++ функтора, которое используется с другим классом для сравнения два математических вектора:

struct equal_vec
{
    bool operator() (const Vector3D& a, const Vector3D& b) const
    {
        Vector3D dist = b - a;
        return ( dist.length2() <= tolerance );
    }

    static const float tolerance = 0.001;
};

Этот код без проблем компилировался с g ++. Теперь в режиме C ++ 0x (-std = c ++ 0x) компилятор g ++ выдает сообщение об ошибке:

error: 'constexpr' необходимо для внутриклассной инициализации статического элемента данных 'допуск' нецелого типа

Я знаю, что могу определить и инициализировать этот static const член вне определения класса.Кроме того, нестатический постоянный член данных может быть инициализирован в списке инициализаторов конструктора.

Но есть ли способ инициализировать константу в объявлении класса, как это возможно в PHP или C #?

Обновление

Я использовал ключевое слово static только потому, что можно было инициализировать такое константы в объявлении класса в g ++. Мне просто нужен способ инициализировать константу в объявлении класса, независимо от того, объявлено ли оно как static или нет.

74
задан ezpresso 8 February 2012 в 20:06
поделиться