"jose luis fernandez diaz" <jo**********************@yahoo.es> wrote...
When I run the program below on Tru64:
#include <string>
int main()
{
char *cad="hola";
string s1 = 1 ? string(cad, 0, 2) : "";
}
I get the next error:
The program is not supposed to compile according to the rules
of the Standard C++ language. 'string' is supposed to be
declared in the 'std' namespace.
Unaligned access pid=28959 <a.out> va=0x3ff8000f40c pc=0x1200059c8
ra=0x120005944 inst=0xa403ffe8
Resources lost(coredump)
These are the OS and compiler versions:
sqocfms01:jdiaz:/tmp>uname -a
OSF1 sqocfms01.esm.cpqcorp.net V5.1 1885 alpha
sqocfms01:jdiaz:/tmp>cxx -V
Compaq C++ V6.3-008 for Compaq Tru64 UNIX V5.1A (Rev. 1885)
Compiler Driver V6.3-008 (cxx) cxx Driver
OS-specific and compiler-specific behaviour cannot be explained from
the language standpoint, and this newsgroup deals with language only.
Perhaps you will find more information in a newsgroup dedicated to
your OS or your compiler.
IOW, there is nothing in the program itself (except the 'std::' thing)
that would suggest the alignment problems, and there is nothing in the
C++ language specification that would help solving your problem.
Oh, try declaring 'cad' as a pointer to _const_ char:
char const* cad = "hola";
(not that it should make much difference, though)
Victor