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-6763d7c284bfc942365541/]

and

[crayon-6763d7c284c04341996288/]

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

Here is a simple friend declaration C++ example.

[crayon-6763d7c284c06747893373/]

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-6763d7c284c07618023756/]

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

[crayon-6763d7c284c08490378654/]

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-6763d7c284c09802932806/]

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

[crayon-6763d7c284c0a667888952/]

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-6763d7c284c0b138245980/]

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

Here is an template example that uses friend.

[crayon-6763d7c284c0c148670230/]

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-6763d7c284c0e892847191/]

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-6763d7c284c10432731969/]

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