https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107945

--- Comment #4 from Jason Liam <jlame646 at gmail dot com> ---
Here is another invalid snippet that gcc accepts but both clang and msvc
rejects correctly. https://godbolt.org/z/sz4rczEaG

```
#include <array>

template<class T, std::size_t N>
    requires std::is_arithmetic_v<T> && (N >= 1)
class Vector
{
    static constexpr std::size_t Dimension = N;
    std::array<T, Dimension> Elements;

public:
    constexpr Vector() noexcept : Elements{} {}
    constexpr ~Vector() = default;
    static constexpr Vector ZeroVector{};
};

int main()
{
    Vector<float, 7> boo = Vector<float, 7>::ZeroVector;
}
```

Related thread
https://stackoverflow.com/questions/78248691/static-data-member-of-template-class-type-constexpr-vs-const-constinit

Reply via email to