incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (STDCXX-617) [Intel C++ 10.0] error on implicit assignment in 26.valarray.transcend.stdcxx-315.cp
Date Mon, 29 Oct 2007 22:00:56 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12538610
] 

vitek edited comment on STDCXX-617 at 10/29/07 3:00 PM:
---------------------------------------------------------------

According to 12.8 p9, a user-declared copy assignment operator X::operator=() is a non-static
non-template member function of class X with exactly one parameter of type X, X& const
X&, volatile X& or const volatile X&. The compiler is not supposed to declare
or define an implicit copy assignment operator if such a user-declared operator exists. The
Intel 10.0.025 compiler does not appear to consider 'X::operator=() const', and later fails
to generate a copy constructor.

2007-10-29  Travis Vitek  <vitek@roguewave.com> 

        STDCXX-617 
        * 26.valarray.transcend.stdcxx-315.cpp: Work around 
        bug in Intel C++ 10.0.025 that does not consider const copy- 
        assignment operator before attempting to generate one.

Index: 26.valarray.transcend.stdcxx-315.cpp 
=================================================================== 
--- 26.valarray.transcend.stdcxx-315.cpp        (revision 589749) 
+++ 26.valarray.transcend.stdcxx-315.cpp        (working copy) 
@@ -48,7 +48,7 @@ 
     ~S () { pass = pass && this == self; } 
     operator double () const { pass = pass && this == self; return 1.0; } 

-    void operator=(const S &s) const { 
+    void operator=(const S &s) { 
         pass = pass && &s == s.self && this == self; 
     } 
     S operator- () const { pass = pass && this == self; return *this; } 



      was (Author: vitek):
    According to 12.8 p9, any user-declared copy assignment X::operator=() that takes a single
X, X& const X&, volatile X& or const volatile X& is supposed to be considered
a copy-assignment operator. The Intel 10.0.025 compiler does not appear to consider X::operator=()
const, and later fails to generate a copy constructor.

2007-10-29  Travis Vitek  <vitek@roguewave.com> 

        STDCXX-617 
        * 26.valarray.transcend.stdcxx-315.cpp: Work around 
        bug in Intel C++ 10.0.025 that does not consider const copy- 
        assignment operator before attempting to generate one.

Index: 26.valarray.transcend.stdcxx-315.cpp 
=================================================================== 
--- 26.valarray.transcend.stdcxx-315.cpp        (revision 589749) 
+++ 26.valarray.transcend.stdcxx-315.cpp        (working copy) 
@@ -48,7 +48,7 @@ 
     ~S () { pass = pass && this == self; } 
     operator double () const { pass = pass && this == self; return 1.0; } 

-    void operator=(const S &s) const { 
+    void operator=(const S &s) { 
         pass = pass && &s == s.self && this == self; 
     } 
     S operator- () const { pass = pass && this == self; return *this; } 


  
> [Intel C++ 10.0] error on implicit assignment in 26.valarray.transcend.stdcxx-315.cp
> ------------------------------------------------------------------------------------
>
>                 Key: STDCXX-617
>                 URL: https://issues.apache.org/jira/browse/STDCXX-617
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    Affects Versions: 4.2
>         Environment: Intel C++ 10.0/Linux
>            Reporter: Martin Sebor
>            Assignee: Travis Vitek
>            Priority: Minor
>             Fix For: 4.2.1
>
>
> Copied from http://www.nabble.com/Re%3A--VOTE--release-stdcxx-4.2.0-%28candidate-7%29-p13372451.html:
> ...I tried Intel 10.0 and found another test that gave a compiler error. I didn't investigate
it in great detail but it looks like a problem
> in the test rather than a compiler bug.
> /home/mbrown/stdcxx-4.2.0/tests/regress/26.valarray.transcend.stdcxx-315.cpp(43): error:
implicitly generated assignment operator cannot copy:
>             const member "S::self"
>   struct S {
>          ^
>           detected during:
>             implicit generation of "S &S::operator=(const S &)" at line 1033
of "/home/mbrown/stdcxx-4.2.0/include/valarray"
>             instantiation of "std::valarray<_TypeT> std::abs(const std::valarray<_TypeT>
&) [with _TypeT=S]" at line 78

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message