https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78842
--- Comment #5 from Jim Michaels <jmichae3 at yahoo dot com> --- I am going to have to go digging through my code. the function that I had this error on about icase shadowing a parameter was a global var, and I tried #include <iostream> #include <vector> #include <string> bool icase=false; std::vector<size_t> find_vsizet(std::string haystack, std::string needle, bool icase=false, size_t pos=0){ return {0}; } int main(){ std::vector<size_t> vst=find_vsizet("1","2",false,0); for (int i=0; i < vst.size(); i++) { std::cout<<vst[i]<<std::endl; } return 0; } but this compiled well and it's the same code I thought. so it's possible this bug may need to be invalidated.