# [2021.06.01] CMake I do not remember I ever built a complex C++ project. Or, even if I did so, I used an IDE as a magic box. So, I never understand all the intricacies of linking. The discovery of the day is that all methods in Python and Java are `virtual`. Also, careless and/or inconsistent usage of the `using namespace` directive can lead to unintended ambiguity. Moreover, word to the wise: 'The using-directive exists for legacy C++ code and to ease the transition to namespaces, but you probably should not use it regularly, at least not in your new C++ code.' (https://isocpp.org/wiki/faq/coding-standards#using-namespace-std). So, I am dealing with legacy C++ code - how amazing! I do love working with piles of legacy code. Also, giving the name `Allocator` to your class should be damned, I wholeheartedly believe. I have no idea why developers of `LibTorch` did that.