Site icon Learn C++

What Is An Extended Friend Declaration in Modern C++?

What Is An Extended friend Declaration in Modern C++

In modern C++ the standards have a wonderfully named extended friend declaration feature to address the class declarations which is a template parameter as a friend. This extended friend declaration is available with the C++ compiler that has C++11 and above standards. In this post, we explain a friend and extended friend declaration in modern C++.

What is a friend declaration in modern C++?

The friend declaration is used in a class body with the friend keyword and grants a function or another class access to private and protected members of the class where the friend declaration appears.

C++11 extends the current language to support a wider range of friend declarations. Now, in modern C++has the extended friend declaration feature to address class declarations which is a template parameter as a friend. This extended friend declaration is available with a C++ compiler that has C++11 and above standards.

Syntaxes for the friend declaration (since C++11):

[crayon-67ea19169fa02526910786/]

and

[crayon-67ea19169fa0c586582286/]

Is there a simple example of a friend declaration in modern C++??

Here is a simple friend declaration C++ example.

[crayon-67ea19169fa0f623024653/]

How do I make a function declaration with friend declaration in modern C++?

In C++, we can declare functions with friend. Here is the syntax:

[crayon-67ea19169fa12993937727/]

and we can declare the F() function with friend as shown below.

[crayon-67ea19169fa15964481127/]

How to create a function definition with friend declaration in modern C++?

In C++, we can define functions with friend. Here is the syntax how we can do,

[crayon-67ea19169fa19035920736/]

and we can declare a reset() function with friend as below.

[crayon-67ea19169fa1b408149979/]

What is an elaborated class specifier with friend declaration in modern C++?

According to the C++ standard, an elaborated type specifier must be used in a friend declaration for a class. That means the class-key of the elaborated_ type_specifier is required. In C++, we can use elaborated class specifier with friend. Here is the syntax.

[crayon-67ea19169fa1d631886262/]

How to use a template with friend declaration in modern C++?

Here is an template example that uses friend.

[crayon-67ea19169fa1f012899080/]

How to use a namespace with friend declaration in a class in modern C++?

Here is a friend example that is used in a class of a namespace.

[crayon-67ea19169fa28587912760/]

Is there a full example of an extended friend declaration in modern C++?

Here is a full example to extended friend declaration in modern C++.

[crayon-67ea19169fa2a591016338/]

For more information about the extended friend declarations feature, see Extended friend declarations Proposal document.

C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs.

There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise version.

Exit mobile version