2010-10-29 3 views
3

В another thread Я представил некоторые методы, которые мы будем использовать для Model-Driven-Development на C++, когда доступны возможности C++ 11, в частности пользовательские литералы. Я только что пересмотрел планы GCC 4.5 и даже 4.6, и это показывает, что эта особенность не поддерживается.Пользовательские литералы (расширенные литералы) C++ 11 ... какие компиляторы поддерживают его?

В любом случае, знаете ли вы, что у меня есть какой-либо компилятор для тестирования этой функции, чтобы начать разработку/реализацию алгоритмов до тех пор, пока C++ 11 не будет одобрен и не реализован в основных бесплатных компиляторах (LLVM, GCC)?

+0

Мы (см. Биографию) создаем переднюю часть C++, используемую для целей реинжиниринга, и являемся C++ 0x в качестве предстоящего стандарта, который, скорее всего, будет реализован в ближайшее время. Хотя я понимаю, какие пользовательские литералы * *, я, по крайней мере, допускаю некоторое недоумение относительно их мотивирующего варианта использования. Тем не менее, вы, похоже, имеете конкретное применение. Можете ли вы набросать, почему пользовательские литералы интересны, особенно для генератора кода, который предположительно может генерировать любой код, который ему нравится, в том числе произвольный goo для инициализации структуры? ... Почему парень, управляемый моделью, даже заботится? –

+0

Ира: Хороший вопрос, и ты прав. Для генератора кода эта функция (почти) мало используется, помимо необходимости генерировать больше классов или менее чистых шаблонов. * Однако * то, что мы хотим достичь, - это очень эффективный охваченный DSL для определения моделей, метамоделей и трансформаций моделей в C++. С помощью метапрограммирования преобразования могут быть намного более эффективными, чем использование, скажем, ATL под Java. –

+0

@Ira UDLs и const_expr должны использоваться для преобразования строк в хэш-коды во время компиляции. – ohmantics

ответ

2

Пока нет, хотя исправления для обоих Clang и GCC были отправлены и отклонены для переделки, поэтому вы должны скоро что-то увидеть.

+0

Спасибо! Я ожидал хотя бы намеков на то, как этот процесс работал. –

1

GCC 4.7 (не выпущенный на момент публикации) поддерживает пользовательские литералы. Для справки см. http://gcc.gnu.org/gcc-4.7/changes.html и http://gcc.gnu.org/gcc-4.7/cxx0x_status.html.

Судя только из прошлых НКУ выпуска timelines, я предполагаю, что GCC 4.7 будет выпущен где-то до мая 2012 года

Вы можете использовать его сразу же, если вы хотите: Я использую GCC 4.7 SVN снимок прямо сейчас конкретно играть с определенными пользователем литералами и некоторыми другими недавно реализованными функциями C++ 11. Они работают очень хорошо, и я надеюсь использовать их всерьез, когда выпущен GCC 4.7.

+0

Спасибо! Это хорошие новости. Спасибо, что дали мне знать. Давайте посмотрим, как у меня есть время, чтобы поиграть с ним ... –