[ https://issues.apache.org/jira/browse/STDCXX-605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549616 ]
Martin Sebor commented on STDCXX-605: ------------------------------------- I assume (1) is because of the compiler bug? For (2) yes, if we can't have static_cast<T>(v) because of the XLC++ bug I'd rather see static_cast<const T&>(v). The problem, as I understand it, is that we're invoking the conversion operator on a non-const dynatype object and thus operator T&() rather than operator const T&() const is being invoked. I wonder if there's a way to detect that the caller is invoking a const T& cast and dispatch to a const member function instead... (3) Yes. I'm saying I think the output of the example should match the code (and use '\n' instead of std::endl). (4) We should try. Is the difference due to unspecified behavior or another compiler bug? (Have fun reading the relevant sections of the standard! ;-) > [IBM XLC++] errors compiling dynatype.cpp > ----------------------------------------- > > Key: STDCXX-605 > URL: https://issues.apache.org/jira/browse/STDCXX-605 > Project: C++ Standard Library > Issue Type: Bug > Components: Examples > Affects Versions: 4.2.0 > Environment: XLC++ 6.0 through 9.0/AIX 5.3 > Reporter: Martin Sebor > Assignee: Travis Vitek > Fix For: 4.2.1 > > Attachments: stdcxx-605.patch > > > The dynatype.cpp example program fails to compile with IBM XLC++ 9.0 on AIX > with ethe following errors: > xlCcore_r -c -I$(TOPDIR)/include/ansi -I$(TOPDIR)/include > -I$(BUILDDIR)/include -I$(TOPDIR)/examples/include -O -Q > -qtemplateregistry=dynatype.ti $(TOPDIR)/examples/tutorial/dynatype.cpp > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 203.27: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "int". > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 209.30: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "double". > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 215.30: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "double". > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 222.35: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "const char *". > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 228.35: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "const char *". > "$(TOPDIR)/examples/tutorial/dynatype.cpp", line 238.28: 1540-0216 (S) An > expression of type "dynatype" cannot be converted to type "char". > gmake: *** [dynatype.o] Error 1 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.