Описание тега boost-proto
Boost.Proto - это фреймворк для построения специфичных для домена встроенных языков в C++. Он предоставляет инструменты для конструирования, проверки типов, преобразования и выполнения шаблонов выражений.
1
ответ
Получение типа тега дочернего выражения Boost Proto
Выражение Boost Proto, когда я не должен ожидать proto_tag член? Я могу узнать о типе тега заполнителя, скажем, одним из следующих способов: typedef proto::tag_of<decltype(_1)>::type ta; typedef decltype(_1)::proto_tag tb; Но если я спрашиваю …
17 май '13 в 23:02
1
ответ
Ошибка оператора [] с пользовательским аргументом Boost C++ Phoenix
С существующим аргументом Boost Phoenix (заполнитель), таким как _1Я могу использовать оператор массива / индекс. Например, следующий отрывок будет отображать 1, int arr[4] = {1,2,3,4}; std::cout << _1[0](arr) << std::endl; Однако, если …
13 мар '13 в 22:39
1
ответ
Boost.Proto: возможно ли для преобразований Proto оценить смешанное выражение матрицы и вектора?
Теперь я пытаюсь научить линейную алгебру компилятора g++, чтобы g++ мог переписать такое выражение, как (matrix * vector)(index) как цикл для оценки выражения. В основном это то, что я ожидаю в качестве следующей статьи последней статьи в серии " E…
02 окт '15 в 05:56
2
ответа
Создание собственных шаблонов выражений с помощью Boost.Proto
Я хотел бы использовать Boost.Proto для преобразования встроенного предметно-ориентированного языка в серию матричных операций, реализованных с помощью библиотеки Eigen. Поскольку эффективность важна, я хочу, чтобы Proto генерировал шаблоны собствен…
19 июл '13 в 20:32
1
ответ
Статические функции из boost.lambda или boost.phoenix
Я регулярно использую boost.lambda (и phoenix) для определения лямбда-функций в C++. Мне очень нравится их полиморфное свойство, простота их представления и то, как они делают функциональное программирование на C++ намного проще. В некоторых случаях…
13 апр '12 в 16:46
0
ответов
Может Boost Proto адаптировать структуры к API типа метода получения
Это похоже на общую проблему. У меня есть два массивных набора кода, которые необходимо склеить: один использует простые структуры для хранения данных, а другой имеет API, которые предоставляют только методы получения / установки. Можно ли использов…
13 июл '16 в 19:39
0
ответов
Как проанализировать ввод DSL в высокопроизводительный шаблон выражения
(Отредактировал заголовок и основной текст и создал возникший дополнительный вопрос) Для нашего приложения было бы идеально проанализировать простой DSL логических выражений. Однако способ, которым я хотел бы сделать это, состоит в том, чтобы проана…
19 июл '13 в 13:39
1
ответ
Boost.Proto и комплексное преобразование
Я экспериментирую с Proto для создания DSEL, который работает с геометрическими векторами. Я пытаюсь написать преобразование, которое будет принимать присваиваемое выражение и развернуть его по компонентам. Например, я хочу заменить p = q + r; от p[…
30 окт '12 в 19:44
1
ответ
Непротопные объекты как терминалы
Я хотел бы использовать экземпляры класса non-proto в качестве терминалов Proto для всех целей. Чтобы включить эту функцию, я использую is_terminalметафункция и передать его BOOST_PROTO_DEFINE_OPERATORS(), Это фактически определяет операторы, поэтом…
31 май '16 в 05:12
1
ответ
Как обернуть множественные перегрузки функций универсальным функциональным объектом TR1?
У меня есть функция foo() это предоставляется в контексте библиотеки. Библиотека определяет несколько перегрузок для этой функции, например: char foo(float x, int y); short foo(double x, char y); (Я описал вышеупомянутые типы аргументов / результато…
19 дек '14 в 19:21
0
ответов
Как определить тип, возвращаемый eval в выражении proto?
Я определил контекст для моей грамматики, который основан на типах ввода, что-то вроде приведенного ниже фрагмента. Я скучаю по типам, где???? являются. Прежде чем я начну писать рекурсивные шаблоны, чтобы понять их, есть ли что-нибудь в прото уже? …
22 янв '12 в 23:47
1
ответ
Как добавить родительские ссылки в выражения Boost.Proto?
Я хочу генерировать деревья выражений, которые имеют "обратные" ссылки от дочернего к родительскому. Есть ли способ настроить генератор Proto или домен, чтобы класс обертки выражения (используя proto::extends<>) содержит ссылку на родительское…
12 авг '15 в 16:09
2
ответа
Соответствие грамматике Boost.Proto типу
Я пытаюсь создать грамматику в Boost.Proto, которая соответствует векторному типу, но когда я даю ему терминал этого типа, он не соответствует грамматике. Определение типа выглядит так: template <typename T, unsigned D> struct vector { typedef…
25 июн '11 в 19:29
1
ответ
Преобразование тел функций в выражениях Boost Phoenix
Как я могу также включить функциональные тела в преобразование выражения Boost Phoenix? Например, я построил раздел "Ленивые функции" в Boost Phoenix Starter Kit и создал функцию отложенного добавления: struct my_lazy_add_impl { typedef int result_t…
05 мар '13 в 13:26
1
ответ
boost.proto + изменить дерево выражений на месте
Фоновый вопрос: boost.proto + обнаруживает недействительный терминал перед построением дерева выражений. Привет, чего я пытаюсь добиться, так это создать копию дерева выражений, где все векторы заменены их начальными итераторами (в моем случае это н…
25 авг '12 в 13:00
1
ответ
Как мне написать протопреобразование на основе функции?
Я хотел бы повторно использовать код, написав протопреобразование, которое шаблонируется указателем на функцию: template <typename Ret, typename A0, typename A1, Ret func(A0,A1)> struct apply_func : proto::callable { // Do something with func …
04 мар '12 в 13:35
1
ответ
Boost.Proto: общий макет класса для EDSL с пользовательскими классами терминала
Чтобы ознакомиться с Boost.Proto, я пытаюсь создать еще одну библиотеку шаблонов выражений для векторов с плавающей запятой фиксированного, но произвольного размера, адаптируя пример TArray из руководства пользователя. Первым делом я определяю свой …
14 авг '13 в 12:44
3
ответа
Построение s-выражения с boost::proto
Я пытаюсь построить объекты s-выражения, используя boost::proto со следующими терминалами: typedef proto::terminal< const char* >::type string_term_t; typedef proto::terminal< uint32_t >::type uint32_term_t; typedef proto::terminal< f…
07 апр '12 в 16:03
1
ответ
boost.proto + обнаруживает неверный терминал перед построением дерева выражений
Я играл с Boost.Proto, в основном для удовольствия, и посмотреть, смогу ли я в будущем использовать его в своих собственных проектах. Тем не менее, как и большинство новичков в этой библиотеке, я играл с модифицированной версией примера "ленивый век…
24 авг '12 в 17:47
0
ответов
Оценка дерева выражений прото
Я пытаюсь оценить дерево выражений прото с пользовательским контекстом. у меня есть struct exp_tag {} используя который создать терминал template <typename T> inline typename proto::result_of::make_expr<exp_tag, T const &>::type exp_…
12 апр '17 в 10:45