I am building a C++ library. I have a struct that contains a std::unique_ptr to another struct that I would like to hide from the user.
For example:
struct MyStruct {
int x;
private:
std::unique_ptr<MyPrivateStruct> y;
};
Now, I need to specify MyStruct in a header file that the user can include so that they know its layout. However, this requires that I also expose the header for MyPrivateStruct, which I do not want to do. Since the size of a unique_ptr is the same regardless of the type, is it possible to do something like this?
struct MyStruct {
int x;
private:
std::unique_ptr<auto> y;
};
The type of the y would then be determined by my cpp files.
This is not quite the same question as Can't use std::unique_ptr<T> with T being a forward declaration since the answer to this question is to use a forward declaration. That question is about a problem when using forward declarations.