Я знаю, что об этом много спрашивали, но только для C/C++ и Java. Вопрос связан с преимуществами производительности при использовании константных выражений:
Когда я вызываю статическую функцию только с константами в качестве аргументов, есть ли способ сообщить компилятору, что он должен оценить вызов уже во время компиляции и заменить вызов результатом?
Пример:
const double pi = Math.PI; //works as Math.PI is a constant
const double spi = Math.Sin(Math.PI); //compiler error, because expression must be constant
Нет ли директив (лучше: атрибутов), чтобы явно указать компилятору, что статический метод, такой как Math.Sin(), не изменяет и не считывает какие-либо данные внутри, чтобы технически было возможно оценить вызов во время компиляции?
О, и, пожалуйста, не отвечайте типа "просто сделайте const double spi = 0
" :), потому что мой пример - это просто упрощенная версия моей проблемы: улучшение удобства сопровождения кода при сохранении максимальной производительности.
Спасибо за любую помощь - это действительно ценится!