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