[Bug c++/79706] invalid delete[] expression doesn't cause substitution failure
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 24 14:21:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79706
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Probably the same issue:
struct A {
void operator delete(void*) = delete;
void operator delete[](void*) = delete;
};
using type1 = decltype(delete (A*)0);
using type2 = decltype(delete[] (A*)0);
Neither of these invalid delete expressions gives an error.
Clang says:
e.cc:6:24: error: attempt to use a deleted function
using type1 = decltype(delete (A*)0);
^
e.cc:2:8: note: 'operator delete' has been explicitly marked deleted here
void operator delete(void*) = delete;
^
e.cc:7:24: error: attempt to use a deleted function
using type2 = decltype(delete[] (A*)0);
^
e.cc:3:8: note: 'operator delete[]' has been explicitly marked deleted here
void operator delete[](void*) = delete;
^
2 errors generated.
EDG says:
"e.cc", line 6: error: function "A::operator delete(void *)" (declared at line
2) cannot be referenced -- it is a deleted function
using type1 = decltype(delete (A*)0);
^
"e.cc", line 7: error: function "A::operator delete[](void *)" (declared at
line 3) cannot be referenced -- it is a deleted function
using type2 = decltype(delete[] (A*)0);
^
2 errors detected in the compilation of "e.cc".
More information about the Gcc-bugs
mailing list