Следующий код компилирует g cc успешно
template<typename T>
class F {
public:
template<typename V>
static void foo(V T::*) {
p<bool> = nullptr;
}
template<typename V>
static inline V T::* p;
};
struct A;
template class F<A>;
int main() {
}
, а компиляция clang завершается неудачно с
<source>:10:18: error: member pointer refers into non-class type 'bool'
static inline V T::* p;
^
<source>:6:3: note: in instantiation of static data member 'F::p' requested here
p<bool> = nullptr;
^
https://godbolt.org/z/NX7VmH
это недействительный код или я не понимаю лязг?