«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как constexpr взаимодействует с inline в C++11?

Как constexpr взаимодействует с inline в C++11?

Опубликовано 23 ноября 2024 г.
Просматривать:808

How Does `constexpr` Interact with `inline` in C  11?

Constexpr и встроенная функция в C 11

В C 11 введение constexpr в качестве квалификатора типа для функций подняло вопросы о его связи с существующим механизмом inline для встраивания функций. В этой статье рассматриваются возможности constexpr и то, как он взаимодействует со встроенными.

Constexpr подразумевает встроенный

Стандарт C 11 явно гласит, что «функции constexpr и конструкторы constexpr являются неявно встроенными». Это означает, что использование constexpr в качестве спецификатора функции также неявно устанавливает встроенный спецификатор. Следовательно, если функция объявлена ​​constexpr, она будет вести себя так, как если бы она имела встроенный спецификатор.

Последствия для непостоянных аргументов

Это означает, что если в как функцию constexpr, компилятор все равно попытается встроить функцию, как если бы она была объявлена ​​встроенной. Это связано с тем, что функции constexpr должны соответствовать определенным критериям, которые делают их пригодными для встраивания, например, быть простыми и нерекурсивными.

Одно правило определения

Однако важно отметить, что встроенные функции Спецификатор оказывает более существенное влияние на правило одного определения (ODR), чем на само встраивание. Функции с разными встроенными квалификаторами могут иметь несколько определений, в то время как функции constexpr, как и встроенные функции, должны иметь одно определение.

Заключение

Хотя функции constexpr неявно подразумевают встроенные функции, спецификатор inline имеет ограниченное влияние по встраиванию решений. В конечном итоге компилятор определяет, следует ли встраивать функцию, на основе различных факторов, включая ее размер и сложность. Функции Constexpr изначально были разработаны для встраивания, но последующие послабления позволили создавать более сложные функции constexpr.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3