Подтвердить что ты не робот

Поддерживает ли какой-либо компилятор constexpr еще?

Я хочу играть с constexpr, не поддерживает ли какой-либо его компилятор?

4b9b3361

Ответ 1

В проекте Apache Stdcxx есть хорошая таблица, в которой описываются функции С++ 0x, с помощью которых компиляторы. Он был обновлен на регулярной основе и охватывает большинство современных компиляторов С++.

В соответствии с этим только GCC 4.5 поддерживает constexpr (обратите внимание, что эта поддержка может быть экспериментальной).

Между этим списком и тем, что было сказано в комментариях, кажется, что ответ "нет".

Ответ 2

По состоянию на июль 2011 года gcc 4.7 поддерживает constexpr. Вы должны построить его из svn, хотя.

Ответ 3

Согласовано, g++ 4.5 и 4.6 поддерживают ключевое слово, но игнорируют последствия. Я просто скомпилировал простую факториальную программу (в обеих версиях с использованием -std = С++ 0x) с линией:

constexpr fact(int i) { return (i>1) ? fact(i-1)*i : 1; }

и он скомпилирован и запущен, но при исследовании источника asm (-S) он показал, что функция вызывается с параметром, а не определяется компилятором.

Ответ 4

Использование "constexpr" очень просто. Посмотрите на этот фрагмент кода:

constexpr int get_five(){
return 5;}

Эта функция возвращает всегда 5, поэтому ее можно объявить с помощью ключевого слова "constexpr". Но факторная функция возвращает значение в зависимости от аргумента, поэтому его "вывод" не всегда один и тот же.