5 ms·
C++17 Filesystem – Writing a simple file watcher
- wmu 8y agostd::unordered_map has method count(), C++20 will be probably just a wrapper for the method. https://en.cppreference.com/w/cpp/container/unordered_map/count https://en.cppreference.com/w/cpp/container/unordered_map/co...
- Topgamer7 8y agoThose files have so many "std::" references. Would this not be a good case to utilize "using namespace std"?
- favorited 8y agoIt's a header-only class[0], and "using namespace" in headers is discouraged. [0] https://github.com/sol-prog/cpp17-filewatcher/blob/master/FileWatcher.h https://github.com/sol-prog/cpp17-filewatcher/blob/master/Fi...
- Someone 8y agoBut one could use it scoped to the FileWatcher class or to each member function, or is my C++ too rusty?
- favorited 8y agoIIRC it can be used from namespace or function scope, but not class.
- jhalstead 8y agoI think it's too rusty, unless I'm misunderstanding https://abseil.io/tips/153 https://abseil.io/tips/153. It says, The vast majority of C++ users think that the using-directive is injecting names into the scope where it’s declared. ... In reality, the names are injected into the nearest common ancestor of the target namespace (::testing) and the usage namespace (::totw::example::anomymous). In our example, that’s the global namespace!
- deleted 8y ago[deleted]
- zeroname 8y agoGuys, don't do this. There are OS-specific APIs to do this stuff efficiently. No, that's not portable. No, those APIs aren't "nice to use". But it's the "right" way to do it. When you do that kind of stuff, keep in mind that many programs modify files by writing to a temp file and then renaming that file. On a secondary note, "modern C++" needs to be stopped. This is absurd: std::chrono::duration<int, std::milli> Just say no. Don't include stuff like <chrono> or <functional>. Ignore Bjarne's opinions. Don't read books by Scott Meyers. Being effective with C++ means understanding its "powers" and then not using them.
- asveikau 8y agoI agree and came here to comment that you should not use this code. The code has sleep calls and polls the filesystem. The nonportable OS support will actually block and have the kernel wake you up when there are actual changes - and not wake you when there is no change - much kinder on the CPU! Just say no indeed, to polling the filesystem with sleep calls. (Maybe as a last resort if the OS specific support is unavailable?)
- stennisrl 8y agoWhile I'll agree that this particular filesystem monitoring class is pretty rough, I think it's a bit of a knee-jerk reaction to just outright dismiss things like <chrono> or <functional>. There are definitely situations where a very dialed-in API is preferred over the standard offerings, but it all depends on your use case.
- ohiovr 8y agowatch ls