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

Reply via email to