I checked the code and it seems boost is used for some pointers (which we can replace with std), the other use is the boost filesystem which is only available from C++17 on in std.
Also should we add the 2.5.0 milestone to these new issues?
Also should we add the 2.5.0 milestone to these new issues?
If you could as well take care of this issue, that would be great! In case we can extend your work package accordingly (ping @a.debenjak). Probably would make sense before going for the cmake port.
So... snap7 library typdefs an unit8 to btye which causes a collision with std::byte in C++17. This could probably be solved by wrapping the snap7.h include in a specific Snap7 namespace, which does compile. However this would need to be tested to make sure that everything is really ok. Do you use any PLC available for testing?
One other note which is very important. With the transition to C++17 we must be careful since FESA relies on the cpp-communication library, while internally FESA still uses auto_ptr which was removed in C++17, so the communication library must not have any C++17 features in it's interface to make sure that the FESA classes could still be compiled with C++11. (auto_ptr just being one example it's possible there are other such cases)
One other option is only get rid of boost from the diagnostic and cli-client and for now leave it in the communication part. Which is a partial solution but gets us in the right direction.
There is tsts7001 (more info here https://www-acc.gsi.de/wiki/Frontend/FEC_PLC), though currently I don't have a WinPC available to install TIA. If you can access it via some tunnel, you could use it.
One other note which is very important. With the transition to C++17 we must be careful since FESA relies on the cpp-communication library, while internally FESA still uses auto_ptr which was removed in C++17, so the communication library must not have any C++17 features in it's interface to make sure that the FESA classes could still be compiled with C++11. (auto_ptr just being one example it's possible there are other such cases)
Uh, a good point .. I did not think in that direction. I think we don't really need boost::filesystem. The only method which uses it, is getBinaryFolderPath, which just returns the path where the binary is located. Can be done without boost, e.g. like this.
So I suppose like this we could completely get rid of boost, and only use C++11 features (if I am not mistaken?)
(So let's postpone that C++17 port with its collision with std::byte for a different day ... would be great to have a separate issue for it)