Как более подробно обсуждается здесь , самый надежный способ сделать это - не через boost :: filesystem.Вместо этого ваша реализация должна учитывать операционную систему, в которой выполняется приложение.
Однако для быстрой реализации без проблем с переносимостью вы можете проверить, возвращает ли ваш argv [0] полный путь к исполняемому файлу.,Если положительный, вы можете сделать что-то вроде:
namespace fs=boost::filesystem;
fs::path selfpath=argv[0];
selfpath=selfpath.remove_filename();