Adapt code to new SW guidelines
Changes include:
- use [[maybe_unused]] instead of cast to (void)
- use generic lambda function and remove related comment about C++11
- update MSVC version check
- don't condition '#pragma once' on MSVC version
Changes include: