stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: openSUSE 10.2 -- gcc 4.1.1/2 -- valarray
Date Mon, 12 Mar 2007 15:23:28 GMT
Scott Zhong wrote:
> test case appears to work.

Yes. 17.names.cpp tries verifies that the library doesn't use
identifiers that belong to the user namespace. I.e., that user
defined macros (such as T, or get_slice) don't clash with
symbols used by the implementation that aren't reserved by the
C++ standard, such as function argument or template parameter
names, or the names of local variables.

So, for example, this must compile with no error:

     #define T !#$%^&
     #include <algorithm>

and so does this:

     #define get_slice !#$%^&
     #include <valarray>

Implementations must use reserved names to get this to work,
which typically means names with two consecutive underscores
(such as __rightSlice), or names that start with an underscore
followed by a capital letter (such as _TypeT).

Martin

> 
> cat t.cpp && gcc -v && gcc t.cpp && ./a.out 
> class slice
> {
> public:
>         slice () : a(0), b(0), c(0) { }
>         slice (int _a, int _b, int _c) 
>                 :  a (_a)
>                 ,  b (_b)
>                 ,  c (_c)
>         { }
> 
> private:
>         int a,b,c;
> };
> 
> template <class T>
> class slice_array
> {
> public:
>         slice_array(slice & __rightSlice)
>                 :  _slice (__rightSlice)
>         { }
> 
>         slice get_slice() const
>         {
>                 return _slice;
>         }
> 
> private:
>         slice_array();
>         slice_array& operator = (const slice_array&);
>         slice _slice;
> };
> 
> int main()
> {
>         slice aSlice;
>         slice_array<int> mySliceArray(aSlice);
>         slice bSlice = mySliceArray.get_slice();
>         return 0;
> }
> Using built-in specs.
> Target: i686-pc-linux-gnu
> Configured with: ./configure --prefix=/usr/local/gcc411
> Thread model: posix
> gcc version 4.1.1
> 
> 
> Yu (Scott) Zhong
> 
> -----Original Message-----
> From: Scott Zhong [mailto:scottz@roguewave.com]
> Sent: Sun 3/11/2007 11:50 AM
> To: stdcxx-dev@incubator.apache.org
> Subject: openSUSE 10.2 -- gcc 4.1.1/2 -- valarray
>  
> on openSUSE 10.2 compiling stdcxx/tests/intro/17.names.cpp with both gcc 4.1.1 and gcc
4.1.2 gives this error:
> 
> scottz@linux-c7fg:~/stdcxx> gcc -c -I/home/scottz/stdcxx/include/ansi -D_RWSTDDEBUG
   -D_RWSTD_USE_CONFIG -I/home/scottz/stdcxx/include -I/home/scottz/stdcxx/gcc411/11s/include
-I/home/scottz/stdcxx/../rwtest -I/home/scottz/stdcxx/../rwtest/include -I/home/scottz/stdcxx/tests/include
 -pedantic -nostdinc++ -g  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long
-v -Wcast-align   /home/scottz/stdcxx/tests/intro/17.names.cpp
> Using built-in specs.
> Target: i686-pc-linux-gnu
> Configured with: ./configure --prefix=/usr/local/gcc411
> Thread model: posix
> gcc version 4.1.1
>  /usr/local/gcc411/libexec/gcc/i686-pc-linux-gnu/4.1.1/cc1plus -quiet -nostdinc++ -v
-I/home/scottz/stdcxx/include/ansi -I/home/scottz/stdcxx/include -I/home/scottz/stdcxx/gcc411/11s/include
-I/home/scottz/stdcxx/../rwtest -I/home/scottz/stdcxx/../rwtest/include -I/home/scottz/stdcxx/tests/include
-D_GNU_SOURCE -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG /home/scottz/stdcxx/tests/intro/17.names.cpp
-quiet -dumpbase 17.names.cpp -mtune=pentiumpro -auxbase 17.names -g -pedantic -W -Wall -Wcast-qual
-Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align -version -o /tmp/ccmQNz95.s
> ignoring nonexistent directory "/usr/local/gcc411/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/include"
> ignoring nonexistent directory "/home/scottz/stdcxx/../rwtest"
> ignoring nonexistent directory "/home/scottz/stdcxx/../rwtest/include"
> #include "..." search starts here:
> #include <...> search starts here:
>  /home/scottz/stdcxx/include/ansi
>  /home/scottz/stdcxx/include
>  /home/scottz/stdcxx/gcc411/11s/include
>  /home/scottz/stdcxx/tests/include
>  /usr/local/include
>  /usr/local/gcc411/include
>  /usr/local/gcc411/lib/gcc/i686-pc-linux-gnu/4.1.1/include
>  /usr/include
> End of search list.
> GNU C++ version 4.1.1 (i686-pc-linux-gnu)
>         compiled by GNU C version 4.1.2 20061115 (prerelease) (SUSE Linux).
> GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129366
> Compiler executable checksum: 3bea10c8b1944d495bcb5dfde72a623e
> /home/scottz/stdcxx/include/valarray:1314: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: In copy constructor 'std::slice_array<_TypeT>::slice_array(const
std::slice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:1301: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: At global scope:
> /home/scottz/stdcxx/include/valarray:1481: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: In copy constructor 'std::gslice_array<_TypeT>::gslice_array(const
std::gslice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:1467: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: At global scope:
> /home/scottz/stdcxx/include/valarray:1532: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: In copy constructor 'std::mask_array<_TypeT>::mask_array(const
std::mask_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:1520: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: At global scope:
> /home/scottz/stdcxx/include/valarray:1640: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: In copy constructor 'std::indirect_array<_TypeT>::indirect_array(const
std::indirect_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:1627: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray: In function 'void __rw::__rw_unary_function(const
std::slice_array<_TypeT>&, const std::valarray<_TypeT>&, _UnaryFunction)':
> /home/scottz/stdcxx/include/valarray:1737: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:1737: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray: In function 'void __rw::__rw_binary_function(const
std::slice_array<_TypeT>&, const std::valarray<_TypeT>&, _BinaryFunction)':
> /home/scottz/stdcxx/include/valarray:1757: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:1757: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray: In constructor 'std::valarray<_TypeT>::valarray(const
std::slice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2077: error: expected primary-expression before
'(' token
> /home/scottz/stdcxx/include/valarray:2077: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2079: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2079: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray:2082: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2082: error: expected `)' before '!' token
> /home/scottz/stdcxx/include/valarray:2082: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2082: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray: In member function 'std::valarray<_TypeT>&
std::valarray<_TypeT>::operator=(const std::slice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2098: error: expected primary-expression before
'(' token
> /home/scottz/stdcxx/include/valarray:2098: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2100: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2100: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray:2103: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2103: error: expected `)' before '!' token
> /home/scottz/stdcxx/include/valarray:2103: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2103: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray: In constructor 'std::valarray<_TypeT>::valarray(const
std::gslice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2144: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2147: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2149: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray:2152: error: expected `)' before '!' token
> /home/scottz/stdcxx/include/valarray:2152: error: expected primary-expression before
'.' token
> /home/scottz/stdcxx/include/valarray:2152: error: expected `;' before ')' token
> /home/scottz/stdcxx/include/valarray: In member function 'std::valarray<_TypeT>&
std::valarray<_TypeT>::operator=(const std::gslice_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2167: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2170: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2172: error: expected ',' or ';' before '!' token
> /home/scottz/stdcxx/include/valarray:2175: error: expected `)' before '!' token
> /home/scottz/stdcxx/include/valarray:2175: error: expected primary-expression before
'.' token
> /home/scottz/stdcxx/include/valarray:2175: error: expected `;' before ')' token
> /home/scottz/stdcxx/include/valarray: In constructor 'std::valarray<_TypeT>::valarray(const
std::mask_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2215: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2215: error: expected initializer before '!' token
> /home/scottz/stdcxx/include/valarray:2216: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2216: error: expected initializer before '!' token
> /home/scottz/stdcxx/include/valarray:2220: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2220: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray:2220: error: expected primary-expression before
'->' token
> /home/scottz/stdcxx/include/valarray:2220: error: expected `)' before ';' token
> /home/scottz/stdcxx/include/valarray:2220: error: expected `;' before ')' token
> /home/scottz/stdcxx/include/valarray:2227: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2227: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray:2227: error: expected primary-expression before
'->' token
> /home/scottz/stdcxx/include/valarray:2227: error: expected `)' before ';' token
> /home/scottz/stdcxx/include/valarray:2227: error: expected `;' before ')' token
> /home/scottz/stdcxx/include/valarray: In member function 'std::valarray<_TypeT>&
std::valarray<_TypeT>::operator=(const std::mask_array<_TypeT>&)':
> /home/scottz/stdcxx/include/valarray:2238: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2238: error: expected initializer before '!' token
> /home/scottz/stdcxx/include/valarray:2239: error: expected unqualified-id before '!'
token
> /home/scottz/stdcxx/include/valarray:2239: error: expected initializer before '!' token
> /home/scottz/stdcxx/include/valarray:2243: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2243: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray:2243: error: expected primary-expression before
'->' token
> /home/scottz/stdcxx/include/valarray:2243: error: expected `)' before ';' token
> /home/scottz/stdcxx/include/valarray:2243: error: expected `;' before ')' token
> /home/scottz/stdcxx/include/valarray:2251: error: 'ERROR' was not declared in this scope
> /home/scottz/stdcxx/include/valarray:2251: error: expected `;' before '!' token
> /home/scottz/stdcxx/include/valarray:2251: error: expected primary-expression before
'->' token
> /home/scottz/stdcxx/include/valarray:2251: error: expected `)' before ';' token
> /home/scottz/stdcxx/include/valarray:2251: error: expected `;' before ')' token
> 
> 
> Yu (Scott) Zhong
> 
> 


Mime
View raw message