[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