http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53753
Bug #: 53753
Summary: stack based constructor is not called for Class1
Object1()
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
I have gcc version 4.7.0 (Ubuntu/Linaro 4.7.0-7ubuntu3) I have following
program
#include<iostream>
class Myclass
{
public:
Myclass() {
std::cout<<"Value of mInt : "<< mInt << " value mStr : " << mStr
<<std::endl;
std::cout<<"test complete" << std::endl;
}
protected:
int mInt;
std::string mStr;
};
int main(void)
{
Myclass instance1();
return 0;
}
if I compile the program with following options
#g++ -W -Wall -Wextra -pedantic -std=c++0x -c inclass-member-initialize.cpp -o
inclass-member-initialize.o
#g++ inclass-member-initialize.o -o output
and If I run the output program
#output
It doesn't show constructor initialization statement at all
But if i modify the line as
Myclass instance1 = Myclass();
Then the constructor is getting called, and I can see test messages.
Even constructor on heap also shows up without any issues such as
Myclass *instance1 = new Myclass();
works just fine,
Just the intialization like Myclass instance1() is currently having issues
Is this expected ?