Оценка функции времени компиляции
1 ответ

Как мне интерпретировать или иначе оценить Rust во время выполнения?

Я искал, и хотя это, кажется, очень востребованная функция, все результаты поиска, по крайней мере, один год. Каково текущее состояние этого? Есть ли хорошее решение для оценки произвольного кода Rust во время выполнения (как подсказка Хаскелла)? Мо…
28 янв '19 в 23:33
1 ответ

Реализация функции sizeof() в стиле C в D

Я хотел бы реализовать функцию sizeof() в C-стиле в D. (Я знаю о.sizeof, но это поможет в портировании большого количества C (C99).) Я хочу, чтобы он мог запускаться во время компиляции, очевидно, и принимать тип или выражение в качестве аргумента. …
19 авг '16 в 00:40
2 ответа

Соединение строк во время компиляции

Я хочу объединить имена файлов и форматы изображений во время компиляции. Следующий пример не работает, потому что string[] не может быть оценено при компиляции, я полагаю... immutable imageFormats = ["bmp", "jpg", "gif", "png"]; template fileNamesW…
01 мар '13 в 11:28
1 ответ

Использование CTFE для генерации множества псевдонимов структур

Скажи у меня класс struct Vector (ElementType, uint Dimension) { ... } представляя фиксированный размерный вектор вместе с этими сокращениями alias Vector!(float, 2) vec2; alias Vector!(float, 3) vec3; alias Vector!(float, 4) vec4; alias Vector!(dou…
31 авг '13 в 20:21
3 ответа

Импортировать содержимое из имен файлов, определенных в массиве

Я могу объединить файлы, прочитанные import во время компиляции вот так: enum string a = import("a.txt"); enum string b = import("b.txt"); enum string result = a ~ b; Как я могу получить сцепленный result если у меня есть имена файлов в массиве? enu…
06 окт '15 в 09:32
1 ответ

Сравнение шаблонов: поиск по времени компиляции и поиск по времени выполнения в D

Мне нужен совет по моему первому D-проекту. Я загрузил его по адресу: - https://bitbucket.org/mrjohns/matcher/downloads IDEA: Сравнительный анализ 3 алгоритмов времени выполнения и сравнение их с вариантами времени компиляции. Единственное различие …
1 ответ

UDA opCall __traits

Этот код завершается ошибкой при втором тестировании модуля при вызове getA!B(). Ошибка: "нужно" это для "значение" типа "строка" Вопрос в том. Как заставить getA всегда возвращать A, независимо от того, является ли UDA типом или opCall? static A op…
16 июн '14 в 22:57
1 ответ

Памятка для функций времени компиляции

Я бы хотел лениво оценить функции. Поскольку вычисление возвращаемых значений является дорогостоящим, я должен использовать запоминание, особенно для вызываемых подфункций, в противном случае сложность вычислений возрастает экспоненциально. Мне нужн…
27 мар '16 в 18:48
1 ответ

D произвольный код во время компиляции

Я слышал, что D может выполнять произвольный пользовательский код во время компиляции. Это правда? Может ли кто-нибудь привести пример (особенно, когда компиляция никогда не заканчивается)? Для чего эта функция? Также, если это так, есть ли способ о…
18 апр '14 в 14:31
1 ответ

D traits - Список интегральных членов данных

Я пытаюсь использовать следующий код, чтобы получить список интегральных членов данных из класса: import std.stdio; import std.traits; class D { static string[] integralMembers = getIntegralMembers(); static string[] getIntegralMembers() { auto allM…
06 окт '14 в 23:24
1 ответ

Насколько эффективен `typeof(expr)`?

Насколько эффективен typeof когда имеешь дело со сложными выражениями? В частности, в двух случаях: сложные выражения, состоящие полностью из константных частей, не нуждающихся в CTFE для оценки сложные выражения, которые должны mixin() строка CTFE.…
06 сен '15 в 06:02
1 ответ

D Генерация кода CTFE и GPU

Могут ли миксины D использоваться для отображения операций линейной алгебры в / или коде ЦП и функциях вершинных шейдеров OpenCL или GPU, таких как GLSL? Это было бы настоящим убийственным приложением для D и улучшенной мостовой логикой, предназначе…
14 янв '13 в 11:20
1 ответ

memset() и memcpy() с использованием D слайсов

На языке D, каковы эквиваленты следующих утверждений, предполагающих код:- int size = 8; int shift = 1; int[size] skip; int[size] suff; memcpy(&skip[0], &skip[0]+shift, (m-shift)*(int.sizeof)); memset(&skip[0]+(m-shift),0, shift*(int.siz…
15 авг '15 в 17:58
3 ответа

C++ позволяет CTFE?

Протестировал простую функцию utf8 strlen и был весьма удивлен, что магистральный лязг полностью ее исключил (gcc не делает): static int strlenutf8(const char* s) { int i = 0, l = 0; while (s[i]) { if ((s[i] & 0xc0) != 0x80) l++; l++; } return j…
24 апр '13 в 15:22
1 ответ

Оценка регулярных выражений во время компиляции в D

Есть ли способ оценить регулярные выражения в D во время компиляции?
29 апр '14 в 21:00