Следующие файлы hpp и cpp являются выдержкой из большой программы, с которой я работаю. Он будет компилироваться с g++ -std=c++17 -pedantic -Wall -Wextra
.
// a.hpp
#include <memory>
class A
{
std::unique_ptr<class A_impl> my;
};
//a.cpp
#include "a.hpp"
int main()
{}
Но я не понимаю синтаксис в строке относительно уникального указателя.
Вопросы:
Какой синтаксис для <class A_impl>
? Как это называется (помещая class
перед необъявленным идентификатором)? Это делает "предварительную декларацию" на A_impl
или как? Я ничего не сказал об идентификаторе A_impl
. Почему с этим компилятор все в порядке?
Если это, возможно, связано с каким-либо «шаблоном проектирования», пожалуйста, помогите мне определить его.
Пожалуйста, укажите верное направление.