- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I encountered a problem concerning virtual functions and anonymous classes. I'm not sure whether this is due to a compiler bug or just illegal C++ code (see also http://stackoverflow.com/questions/2082339/virtual-tables-on-anonymous-classes). Anyway, the problem only occurs when the program given below is compiled with the C++ Compiler which is part of Parallel Studio 2011 (Version 12.0.0.063, Build 20100721), but it does not occur when using the Intel C++ Compiler for Linux (Version 11.1, 20100806) or GCC 4.5.1. If it's illegal C++ code, I would suggest to let the compiler emit at least a warning.
Kind regards,
Peter
#include
using namespace std;
class base {
public:
virtual void test() = 0;
};
class foo: public base {
public:
void test() {cout << "foo " << endl;}
};
class bar: public base {
public:
void test() {cout << "bar " << endl;}
};
int main() {
class: public foo {} f1;
// b1 is never used, but must exist to produce the error
class: public bar {} b1;
// prints "foo", okay!
(static_cast (&f1))->test();
// prints "bar", wrong!
base* temp1 = static_cast (&f1);
temp1->test();
// ==================================================
class foo2: public foo {} f2;
// prints "foo", okay!
(static_cast (&f2))->test();
// prints "foo", okay!
base* temp2 = static_cast (&f2);
temp2->test();
}
I encountered a problem concerning virtual functions and anonymous classes. I'm not sure whether this is due to a compiler bug or just illegal C++ code (see also http://stackoverflow.com/questions/2082339/virtual-tables-on-anonymous-classes). Anyway, the problem only occurs when the program given below is compiled with the C++ Compiler which is part of Parallel Studio 2011 (Version 12.0.0.063, Build 20100721), but it does not occur when using the Intel C++ Compiler for Linux (Version 11.1, 20100806) or GCC 4.5.1. If it's illegal C++ code, I would suggest to let the compiler emit at least a warning.
Kind regards,
Peter
#include
using namespace std;
class base {
public:
virtual void test() = 0;
};
class foo: public base {
public:
void test() {cout << "foo " << endl;}
};
class bar: public base {
public:
void test() {cout << "bar " << endl;}
};
int main() {
class: public foo {} f1;
// b1 is never used, but must exist to produce the error
class: public bar {} b1;
// prints "foo", okay!
(static_cast
// prints "bar", wrong!
base* temp1 = static_cast
temp1->test();
// ==================================================
class foo2: public foo {} f2;
// prints "foo", okay!
(static_cast
// prints "foo", okay!
base* temp2 = static_cast
temp2->test();
}
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've created a bug report based on this testcase.
The link you provided http://stackoverflow.com/questions/2082339/virtual-tables-on-anonymous-classes has a slightly different test, icl gives an internal error. I'll also report it as well to get the internal error fixed.
Thanks for reporting.
Jennifer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Updated info on the virtual function issue and the other internal error one. Both are fixed and should be in the next Update 2 release. The issues are DPD200161465, DPD200161467(Internal Error).
Please watch the email notification from Intel Premier Support around end of Jan or early Feb 2011 about the update 2 release. When update 2 is release, our fixes listshould show the issue IDsonhttp://software.intel.com/en-us/articles/intel-composer-xe-2011-compilers-fixes-list/
Thanks,
Jennifer
Please watch the email notification from Intel Premier Support around end of Jan or early Feb 2011 about the update 2 release. When update 2 is release, our fixes listshould show the issue IDsonhttp://software.intel.com/en-us/articles/intel-composer-xe-2011-compilers-fixes-list/
Thanks,
Jennifer

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page