"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How Does `constexpr` Interact with `inline` in C++11?

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

Published on 2024-11-23
Browse:839

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

Constexpr and Inline Function in C 11

In C 11, the introduction of constexpr as a type qualifier for functions raised questions about its relationship with inline, an existing mechanism for inlining functions. This article examines the implications of constexpr and how it interacts with inline.

Constexpr Implies Inline

The C 11 standard explicitly states that "constexpr functions and constexpr constructors are implicitly inline". This means that using constexpr as a function specifier implicitly sets the inline specifier as well. Therefore, if a function is declared constexpr, it will behave as if it had the inline specifier.

Implications for Non-Constant Arguments

This implies that if a non-constant argument is passed to a constexpr function, the compiler will still attempt to inline the function as if it were declared inline. This is because constexpr functions are required to meet certain criteria that make them suitable for inlining, such as being simple and not recursive.

One Definition Rule

However, it's crucial to note that the inline specifier has a more significant impact on the one definition rule (ODR) than on inlining itself. Functions with different inline qualifiers can have multiple definitions, while constexpr functions, like inline functions, must have a single definition.

Conclusion

While constexpr functions implicitly imply inline, the inline specifier has limited impact on inlining decisions. The compiler ultimately determines whether to inline a function based on various factors, including its size and complexity. Constexpr functions were initially designed to be suitable for inlining, but subsequent relaxations have allowed for more complex constexpr functions.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3