c++/1882: Compilation fails when a default constructor appears as the first argument in constructor template.
bumgard@roguewave.com
bumgard@roguewave.com
Sun Apr 1 00:00:00 GMT 2001
>Number: 1882
>Category: c++
>Synopsis: Compilation fails when a default constructor appears as the first argument in constructor template.
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 05 20:36:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Gregory Bumgardner
>Release: 2.97
>Organization:
>Environment:
Red Hat Linux 2.2.16
>Description:
A legal instantiation of a multi-argument constructor
template fails with a compilation error if the first
argument is a temporary object created using a default
constructor.
This problem prevents a common use of the std::locale class:
std::locale loc(std::locale(), new Myfacet);
This statement produces the following error messages:
"type specifier omitted for parameter"
"parse error before 'new'"
>How-To-Repeat:
Compile the code in the file attachment:
gcc template_bug.cpp
>Fix:
Unknown. The error appears to be in the C++ parser.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="template_bug.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="template_bug.cpp"
Y2xhc3MgVGVzdCB7CiAgcHVibGljOgogICAgVGVzdCgpOwogICAgVGVzdChjb25zdCBjaGFyICop
OwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVGVzdChUKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFRlc3QoVCosIGNvbnN0IFRlc3QmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFRlc3Qo
Y29uc3QgVGVzdCYsIFQqICk7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGZ1bmMoY29u
c3QgVGVzdCYsIFQqICk7Cn07CgpUZXN0OjpUZXN0KCkgewp9CgpUZXN0OjpUZXN0KGNvbnN0IGNo
YXIqKSB7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClRlc3Q6OlRlc3QoY29uc3QgVGVzdCYsIFQq
KSB7Cn0KCmludCBtYWluKCkgewoKICBUZXN0IHQxOwoKICAvLyBWYXJpYWJsZSByZWZlcmVuY2Ug
YXMgZmlyc3QgcG9zaXRpb24gb2YgY29uc3RydWN0b3IgdGVtcGxhdGUgY29tcGlsZXMuIAogIFRl
c3QgdDIodDEsIG5ldyBpbnQpOyAgLy8gUGFzc2VzIAoKICAvLyBOb24tZGVmYXVsdCBjb25zdHJ1
Y3RvciBhcyBmaXJzdCBhcmd1bWVudCBvZiBjb25zdHJ1Y3RvciB0ZW1wbGF0ZSBjb21waWxlcy4g
CiAgVGVzdCB0MyhUZXN0KCIjIiksIG5ldyBpbnQpOyAgCgogIC8vIERlZmF1bHQgY29uc3RydWN0
b3IgYXMgc2Vjb25kIGFyZ3VtZW50IG9mIGNvbXN0cnVjdG9yIHRlbXBsYXRlIGNvbXBpbGVzLiAK
ICBUZXN0IHQ0KG5ldyBpbnQsIFRlc3QoKSk7IAoKICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yIGFz
IG9ubHkgYXJndW1lbnQgb2YgY29uc3RydWN0b3IgdGVtcGxhdGUgY29tcGlsZXMuIAogIFRlc3Qg
dDYoaW50KDEpKTsKCiAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvciBhcyBmaXJzdCBhcmd1bWVudCBv
ZiBmdW5jdGlvbiB0ZW1wbGF0ZSBjb21waWxlcwogIHQxLmZ1bmMoVGVzdCgpLCBuZXcgaW50KTsg
CgogIC8vIERlZmF1bHQgY29uc3RydWN0b3IgYXMgZmlyc3QgYXJndW1lbnQgY29uc3RydWN0b3Ig
dGVtcGxhdGUgRkFJTFMgdG8gY29tcGlsZSEKICBUZXN0IHQ1KFRlc3QoKSwgbmV3IGludCk7IAoK
ICByZXR1cm4gMDsKfQogIAo=
More information about the Gcc-prs
mailing list