the C++ standard says: if T is a class type with a default constructor that is neither user-provided nor deleted (that is, it may be a class with an implicitly-defined or defaulted default constructor), the object is zero-initialized and then it is default-initialized if it has a non-trivial default constructor Unfortunately, MSVC always calls the default constructor, even if it is trivial, which breaks constexpr-ness. To workaround this, we're always zero-initializing TVecN<> Also removed constexpr from default constructors, since they never can be constexpr as they're not initializing the vector.
7.9 KiB
7.9 KiB