Does `constexpr` Imply `inline` in C 11?
Does Constexpr Imply Inline in C 11?
The C 11 standard introduces the constexpr specifier, which allows functions and variables to be evaluated at compile time. This has led to some confusion about the relationship between constexpr and inline.
The inline specifier instructs the compiler to perform inline expansion of a function. This means that the function's code will be inserted directly into the code where the function is called, rather than creating a separate function that is called indirectly.
The constexpr specifier does not explicitly imply the inline specifier. However, the C 11 standard states that "constexpr functions and constexpr constructors are implicitly inline" (§7.1.5/2).
Implications
This means that the compiler is required to follow the same rules for a constexpr function as it would for an inline function. In particular, the compiler may inline the function, even if it is called with non-constant arguments.
Example
Consider the following example:
<code class="cpp">#include <iostream> #include <cstdlib> inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); }</code>
In this example, the f function is inlined, even though it is called with a non-constant argument. This is because the f function is declared as inline.
Conclusion
The constexpr specifier does not explicitly imply the inline specifier. However, the C 11 standard requires compilers to behave as if constexpr functions are inline functions. This means that a compiler can safely inline a constexpr function, even if it is called with non-constant arguments.
The above is the detailed content of Does `constexpr` Imply `inline` in C 11?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What are the types of values returned by c language functions? What determines the return value?

C language function format letter case conversion steps

What are the definitions and calling rules of c language functions and what are the

Where is the return value of the c language function stored in memory?

How does the C Standard Template Library (STL) work?

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?
