This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
/* Hello,
I have a problem with the compiler gcc version 3.2 20020927 (prerelease)
on Window XP.
For details please see attachment out.log in mail.
Compiling this file with
g++ -w test.cpp
results in
test.cpp: In function `int main()':
test.cpp:55: no match for `int * Wrapper<int>&' operator
Compiling this with
g++ -w -DNO_ERRORS test.cpp
works.
The define just adds an explicit cast and now the compiler can deduce how the "*" in line 63
can be compiled. So I guess the compiler can only use conversion operators
from template classes that have been instanciated at least once explicitly.
Could you please tell me if I (once again) failed to understand the standard and explain
the reasons and ramifications [what if different compilation units instantiate different
possible conversions, will this ambuguity be detected ?] for this behaviour
or if this is really a bug ?
Regards
Burkhard Neppert
b.neppert@dr-staedtler.de
*/
#include <vector>
using namespace std;
template<class T>
struct Wrapper {
Wrapper() : val() {}
Wrapper(T const & v) : val(v) {}
operator T&() { return val; }
operator T const&() const { return val; }
Wrapper & operator=(T const & rhs) {
val=rhs;
return *this;
}
T val;
};
int main() {
vector<Wrapper<int> > foo;
#if defined(NO_ERRORS)
// If we just use this conversion from Wrapper<int> => int once explicitly
// then the rest compiles OK
(int)(*foo.begin());
#endif
for(vector<Wrapper<int> >::iterator iter=foo.begin(); iter!=foo.end(); ++iter) {
(*iter)=10*(*iter)+1; // Depends on the explicit call of conversion from Wrapper<int> to int
}
return 0;
}
(See attached file: test.cpp)(See attached file: out.log)Attachment:
test.cpp
Description: Binary data
Attachment:
out.log
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |