Qt Creator domyślnie ma włączone „jakieś” podpowiadanie kodu, które cośtam podpowiada, jednak nie jest ono zbyt dobre. Problem pojawia się, gdy przeciążymy operator[], aby zwracał obiekt z naszego kontenera. Przykład:
// mamy przykładową klasę:
class Pixel
{
public:
Pixel(int x, int y, bool isVisible = true) : x(x), y(y), visible(isVisible) {}
bool isVisible(){return visible;}
void makeVisible() {visible = true;}
void makeInvisible() {visible = false;}
private:
int x;
int y;
bool visible;
};
// i kontener na obiekty tej klasy:
class LineOfPixels : private std::vector < Pixel >
{
public:
LineOfPixels(){}
LineOfPixels(std::vector < Pixel > vectorToCopy) : std::vector< Pixel >(vectorToCopy) {}
size_t size() {return std::vector < Pixel > ::size();}
Pixel& getPixelAt(int pixelNumber) {return this->at(pixelNumber);}
Pixel& operator[](const int pixelNumber) {return std::vector < Pixel > ::operator[](pixelNumber);}
};
int main()
{
int size = 2;
LineOfPixels lineOfPixels(std::vector <Pixel>(size, Pixel(0, 0)));
lineOfPixels[1].makeInvisible();
lineOfPixels.getPixelAt(1).makeVisible();
return 0;
}
Po instalacji Qt Creatora opcja Clang Code Model domyślnie jest wyłączona. Jeśli teraz w programie chcemy odwołać się do obiektu klasy Pixel przez zwykły getter:
lineOfPixels.getPixelAt(1).makeInvisible();
to podpowiadanie składni zadziała normalnie pokazując listę dostępnych składowych na każdym poziomie. Natomiast gdy zrobimy to samo przez przeciążony operator[] jak tutaj:
lineOfPixels[1].makeInvisible();
to podpowiadanie składni zgłupieje i nic nam nie pomoże. Po wpisaniu „lineOfPixels[1].” nie otrzymamy żadnej podpowiedzi.
Aby podpowiadanie składni działało poprawnie w każdych warunkach, trzeba włączyć plugin ClangCodeModel, zaznaczając opcję w Help → About Plugins… → C++ → ClangCodeModel.

Ciekawe, Clang code model jest domyślny od kilku już wersji, a od chyba 3.6 trzeba specjalnie włączyć stary plugin żeby w ogóle mieć wybór.