Металлический и C++ 11
Металлический язык штриховки основывается на C++ 11 Спецификаций [PDF] с определенными расширениями и ограничениями. См. это для подробного описания языковой грамматики.
Этот раздел и его подразделы описывают модификации и ограничения на C++ 11 языков, поддерживаемых на Металлическом языке штриховки.
Для получения дополнительной информации о Металлических директивах предварительной обработки языка штриховки и параметрах компилятора, посмотрите Параметры компилятора.
Перегрузка
Металлические поддержки языка штриховки, перегружающиеся, как определено разделом 13 из C++ 11 Спецификаций. Правила перегрузки функции расширяются для включения спецификатора адресного пространства параметра. Металлическая графика языка штриховки и функции ядра не могут быть перегружены. (Для определения графики и функций ядра, посмотрите Функциональные Спецификаторы.)
Шаблоны
Металлический язык штриховки поддерживает шаблоны, как определено разделом 14 из C++ 11 Спецификаций.
Предварительная обработка директив
Металлический язык штриховки поддерживает директивы предварительной обработки, определенные разделом 16 из C++ 11 Спецификаций.
Ограничения
Следующий C++ 11 функций не доступны на Металлическом языке штриховки (числа раздела в этом списке отсылают к C++ 11 Спецификаций):
лямбда-выражения (разделяют 5.1.2),
вызовы рекурсивной функции (разделяют 5.2.2, элемент 9),
оператор dynamic_cast (разделяют 5.2.7),
введите идентификацию (разделите 5.2.8),
новые и операторы delete (разделяет 5.3.4 и 5.3.5),
оператор noexcept (разделяют 5.3.7),
оператор перехода (разделяют 6.6),
регистр, thread_local спецификаторы хранения (разделяют 7.1.1),
спецификатор виртуальной функции (разделяют 7.1.2),
производные классы (разделяет 10 и 11),
обработка исключений (разделяют 15),
Библиотекой стандарта C++ нельзя пользоваться в Металлическом коде языка штриховки. Вместо того, чтобы пользоваться библиотекой стандарта C++, Металл пользуется своей собственной стандартной библиотекой, описанной в Металлической Стандартной Библиотеке.
Металлический язык штриховки ограничивает использование указателей:
Параметры Металлической графике и функциям ядра, которые являются указателями, объявленными в программе, должны быть объявлены с Металлом
device
,threadgroup
, илиconstant
спецификатор адресного пространства. (См. Спецификаторы Адресного пространства для Переменных и Параметры за больше о спецификаторах адресного пространства.)Указатели функции не поддерживаются.
Металлическая функция не может быть вызвана main
.
Металлическая пиксельная система координат
В Металле источник пиксельной системы координат текстуры или присоединения кадрового буфера определяется в верхнем левом углу.