[Q] Ctor with default arguments for object initialization from "c" array

gcl++ Library Development m.cvjetko_nO_spaM@rt.e-technik.uni-erlangen.de
Tue May 4 12:18:00 GMT 1999


/*
    newsgroups: comp.lang.c++,
                comp.lang.c++.moderated,                    
                egcs@cygnus.com 
		egcs-bugs@cygnus.com
                bug-g++@prep.ai.mit.edu
                gnu.g++.bug, gnu.g++.help, gnu.g++.lib.bug 
                comp.std.c++

    reply to  : vcvjetko@linux.rulz.zg.tel.hr
                by removing praising the best OS

  [Q] Ctor with default arguments for object initialization from "c"
array

  Hi again!

  I wanted to initalize an object (let say container) in the constructor
from 
  one "c" array so I tried with default arguments and it worked, but
only as
  long as there exists one "c" array with the same name as function
argument!!
  If there's no such array compiler issues an errror!

  Is this construct wrong, forbidden or am I doing something wrong???

  At the end there are results 
  Thanx 
  Miljenko!
*/

# include <iostream>

template <class T>
class X
{
public:
  // ctor
  X();
  // ctor from array
  X(const T a[], unsigned long int size_ = sizeof(a) );
};

template<class T>
X<T>::X<T>()
{
};

template<class T>
X<T>::X<T>(const T a[], unsigned long int size_)
{
  // do something with a[]
};

//===========================================================
int main()
{

  # if defined _NO_ERROR_

  /*
    Note! 
    a is the argument in X((const T a[], unsigned long int size_ =
sizeof(a) );
   */
  int a[3] = {1,2,3};
  X<int> x1(a);

  # endif

  int b[]  = {1,2,3};
  X<int> x2(b);

  return 0;
}


/*
gcl@moljac:~/gcl/src/example/Tests/syntax_standard_comformance > g++ -v
-D _NO_ERROR_ ctor_init_from_c_array_syntax_err_REPORTED.cpp 
Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/cpp -lang-c++ -v -undef
-D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__
-Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__
-D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix)
-D__EXCEPTIONS -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386
-D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__ -D__pentium
-D__pentium__ -D _NO_ERROR_
ctor_init_from_c_array_syntax_err_REPORTED.cpp /tmp/ccTYwiwr.ii
GNU CPP version egcs-2.91.66 19990314 (egcs-1.1.2 release) (i386
Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++
 /usr/local/include
 /usr/i586-pc-linux-gnu/include
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/cc1plus
/tmp/ccTYwiwr.ii -quiet -dumpbase
ctor_init_from_c_array_syntax_err_REPORTED.cc -version -o
/tmp/cc6EFPjc.s
GNU C++ version egcs-2.91.66 19990314 (egcs-1.1.2 release)
(i586-pc-linux-gnu) compiled by GNU C version egcs-2.91.66 19990314
(egcs-1.1.2 release).
 as -V -Qy -o /tmp/ccGSZmbD.o /tmp/cc6EFPjc.s
GNU assembler version 2.9.1 (i486-linux), using BFD version 2.9.1.0.15
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/collect2 -m elf_i386
-dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/crtbegin.o
-L/usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66
-L/usr/i586-pc-linux-gnu/lib /tmp/ccGSZmbD.o -lstdc++ -lm -lgcc -lc
-lgcc /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/crtend.o
/usr/lib/crtn.o








gcl@moljac:~/gcl/src/example/Tests/syntax_standard_comformance > g++ -v
-U _NO_ERROR_ ctor_init_from_c_array_syntax_err_REPORTED.cpp 
Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/cpp -lang-c++ -v -undef
-D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__
-Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__
-D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix)
-D__EXCEPTIONS -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386
-D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__ -D__pentium
-D__pentium__ -U _NO_ERROR_
ctor_init_from_c_array_syntax_err_REPORTED.cpp /tmp/ccjSowJx.ii
GNU CPP version egcs-2.91.66 19990314 (egcs-1.1.2 release) (i386
Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++
 /usr/local/include
 /usr/i586-pc-linux-gnu/include
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.66/cc1plus
/tmp/ccjSowJx.ii -quiet -dumpbase
ctor_init_from_c_array_syntax_err_REPORTED.cc -version -o
/tmp/ccr6HW3K.s
GNU C++ version egcs-2.91.66 19990314 (egcs-1.1.2 release)
(i586-pc-linux-gnu) compiled by GNU C version egcs-2.91.66 19990314
(egcs-1.1.2 release).
ctor_init_from_c_array_syntax_err_REPORTED.cpp: In function `int
main()':
ctor_init_from_c_array_syntax_err_REPORTED.cpp:68: `a' undeclared (first
use this function)
ctor_init_from_c_array_syntax_err_REPORTED.cpp:68: (Each undeclared
identifier is reported only once
ctor_init_from_c_array_syntax_err_REPORTED.cpp:68: for each function it
appears in.)

 */


More information about the Gcc-bugs mailing list