Любой компилятор поддерживает constexpr еще? - PullRequest
12 голосов
/ 16 июня 2010

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

Ответы [ 4 ]

10 голосов
/ 16 июня 2010

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

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

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

4 голосов
/ 31 июля 2011

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

0 голосов
/ 21 марта 2012

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

constexpr int get_five(){
return 5;}

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

0 голосов
/ 01 июня 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...