Re: Is this correct C++?
On Oct 16, 11:10 am, Daniel Kr?gler <daniel.krueg...@googlemail.com>
wrote:
On 16 Okt., 02:15, Gerasimos Karvounis <Gerasimos.Karvou...@gmx.de>
wrote:
But, if I change the declaration of B into:
class __declspec(dllexport) B {
public:
B(), // Notice the comma instead of a semicolon!
B(int i);
private:
int mValue;
};
Then my compiler reports error C2487: member of dll interface class may
not be declared with dll interface
...
2. Is it a compiler bug?
It's hard to say, because __declspec is a non-standard
component. In which way it interferes with the declaration
sequence is out of the scope of the standard.
The "__declspec" identifier is not "non-standard" C++. To call
__declspec "non-standard" means that its presence in a program
violates - or at least - disregards the C++ Standard. The clear
implication is that a compiler that recognizes this "non-standard"
identifier - cannot be a "true" (or "valid" or "conforming") C++
compiler.
In reality, "__declspec" is an "implementation-defined" identifier,
and one that fully conforms to the C++ Standard: "Each name that
contains a double underscore (__) ... is reserved to the
implementation for any use."[?17.4.3.1.2].
Furthermore, there is no basis for concluding that __declspec somehow
"interferes" with the Standard C++ meaning of the declaration. And in
fact, it does not.
Greg
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]