https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86730
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Asif from comment #0) > gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0 > > //Below code does not compile, I am not using the copy constructor You are using it. , it seems > to work fine in Vs2013, CLANG (experimental P1144), tested using > https://godbolt.org/ > > > struct A1{ > A1(int y){} > A1(const A1 &a1)=delete; > }; > > int main() > { > A1 a1_=6; This is copy-initialization, see https://en.cppreference.com/w/cpp/language/copy_initialization which explains that the copy constructor is required to be accessible, even if the actual call optimised away. Your code is valid in C++17, but not C++11 or C++14.