If I'm implementing a class using the PIMPL idiom, should I declare a header file for the private implementation too? Is it useful to do so or it makes no difference? I find it a little bit strange to use 2 headers for the same class, but if it's for the better then I'm all for it
The whole point of PIMPL is to hide the implementation.
If you place the implementation in the same header, you're not hiding the implementation, right? Remember, the user of that class will be given the file that forward declares the implementation, but they'll never see that implementation.