This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/36696] New: Default constructor instance definition with empty argument list quietly ignored
- From: "mike dot allen at facsim dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Jul 2008 14:24:16 -0000
- Subject: [Bug c++/36696] New: Default constructor instance definition with empty argument list quietly ignored
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Compile following with -Wall:
#include <iostream>
class Raii
{
public:
Raii () throw ()
{
std::cout << "Raii::Raii () called..." << std::endl;
}
public:
~Raii () throw ()
{
std::cout << "Raii::~Raii () called..." << std:: endl;
}
};
int main (int /*argc*/, char** /*argv*/)
{
Raii raii ();
std::cout << "Inside main ()..." << std::endl;
return 0;
}
This compiles with no errors. When the result is executed, you get the
following output:
Inside main ()...
And that's all. The compiler quietly ignored the declaration of an Raii
instance with an empty argument list. No warnings, no errors, nothing.
If the empty argument list is removed, that is, if you have:
#include <iostream>
class Raii
{
public:
Raii () throw ()
{
std::cout << "Raii::Raii () called..." << std::endl;
}
public:
~Raii () throw ()
{
std::cout << "Raii::~Raii () called..." << std:: endl;
}
};
int main (int /*argc*/, char** /*argv*/)
{
Raii raii;
std::cout << "Inside main ()..." << std::endl;
return 0;
}
Then you get the expected output:
Raii::Raii () called...
Inside main ()...
Raii::~Raii () called...
Is this correct behavior?
g++ -v:
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr
--enable-targets=all --enable-checking=release --build=i486-linux-gnu
--host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
--
Summary: Default constructor instance definition with empty
argument list quietly ignored
Product: gcc
Version: 4.2.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mike dot allen at facsim dot org
GCC target triplet: i486-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36696