google / s2geometry

Computational geometry and spatial indexing on the sphere
http://s2geometry.io/
Apache License 2.0
2.29k stars 302 forks source link

Fix several MSVC build issues #338

Closed jherico closed 7 months ago

jherico commented 8 months ago

Attempting to fix some of the issues preventing compilation on Windows platforms, in order to then fix the vcpkg version to also support windows, and finally to fix a downstream consumer of s2geometry so it can use vcpkg for the dependency.

Changes

The using Base::Base technique to import the base class ctors doesn't appear to import the base class default ctor if it would otherwise be implicitly deleted (be the declaration of a non-default ctor in this case), at least on MSVC 2022. See https://godbolt.org/z/EPnsMEq8v Clang and GCC both seem to handle this OK.

uint isn't a primitive type or a guaranteed typedef in C++. While Clang and GCC both appear to thread it as unsigned int, MSVC treats it as un unknown symbol. Replacing it with uint32_t seems to do the trick.

jmr commented 7 months ago

Thanks!