Hello I have a small test program (see below) that uses a member variable (a) of a derived class (A) as a parameter when calling the constructor of the base class (A_base). In fact this is "wrong" code since the base class constructor is called with an un-initialized variable as input. I would expect that the compiler generates a warning/error for this since the behavior completely depends on the contents of the memory where the object was allocated from. In the example code I use a placement new to actually show that the value seen in the constructor of the base class is the value I used to fill the memory with. I tried it with different gcc versions but none of these are generating a warning/error for this while other tools like coverity or sonarqube just report the issue ... Is it expected that there is no warning generated or do I need to pass extra compiler options to generate this warning? I compile the program like this: $ g++ -Wall -Wextra -std=gnu++11 /tmp/a.cc And the output it generates: $ ./a.out 1 a=100 2 a=0 #include <stdio.h> #include <string.h> #include <new> class A_base { public: A_base(bool a) { printf("1 a=%d\n", (int)a); } }; class A: public A_base { public: bool a = false; A(): A_base(a) { printf("2 a=%d\n", (int)a); } ~A() {} }; int main(void) { char mem[10]; memset(mem,100,sizeof(mem)); A *b = new ((void*)mem) A(); return 0; } Note: The program basically prints the boolean values as an int to make it clear in the output that it is just using the memory as is, without initializing it. Best regards, Ronny