If I explicitely delete e.g. a constructor it is still shown in code completion (as private). It should not be shown there at all because there is no way even for a friend class or the same class to make valid use of this. Reproducible: Always
That's not correct. You can use private constructors to create class's instances within the class.
Ehm, no. If it's deleted it is not there. It's not about foo::foo(), but about bar::bar(): class foo { foo(); } class bar { bar() = delete; } bar::bar() can't ever exist, any try of using it would result in a linker error.
It's C++ things, so put it under C++
Created attachment 82756 [details] Patch with fix and testcase
Git commit 17162ec728f33244eee7947a723763625633c2fe by Milian Wolff, on behalf of Rolf Eike Beer. Committed on 09/10/2013 at 16:39. Pushed by mwolff into branch '4.5'. do not offer explicitely deleted methods for code completion Again basically done by Milian. M +4 -0 languages/cpp/codecompletion/context.cpp M +8 -1 languages/cpp/tests/test_cppcodecompletion.cpp http://commits.kde.org/kdevelop/17162ec728f33244eee7947a723763625633c2fe
Seems to be only half of the story. When trying to call a constructor e.g. like below the deleted methods still show up: A *a = new A(
Created attachment 82779 [details] Suppress deleted constructors when trying to create an object
Git commit dfae4bbc1f4a83f71e69dd162573f9b51c8b2c49 by Rolf Eike Beer. Committed on 10/10/2013 at 21:42. Pushed by dakon into branch '4.5'. when calling a constructor don't offer deleted ones for completion M +4 -1 languages/cpp/cppduchain/overloadresolution.cpp M +66 -0 languages/cpp/tests/test_cppcodecompletion.cpp M +2 -0 languages/cpp/tests/test_cppcodecompletion.h http://commits.kde.org/kdevelop/dfae4bbc1f4a83f71e69dd162573f9b51c8b2c49