I had the following piece of code in one of my projects: template<typename> constexpr std::size_t iterator_category_value; g++5.2 is happy with it but clang is not and complains, saying that it shouldn't be possible to forward-declare a constexpr whatever. To be sure, I asked the question on StackOverflow: http://stackoverflow.com/q/33197817/1364752 It seems that this code should not be accepted, and a defect report seems to agree that it should be rejected: http://wg21.cmeerw.net/cwg/issue1712
This seems like an ill-formed, no diagnostic required situation because no valid specialization can be generated; if you try to instantiate the template, G++ complains then. I agree that giving a diagnostic would be better, but the conformance issue is that G++ allows you to redefine it (PR 92576).