User's Guide
To successfully compile the code with either compiler, use one of the two alternatives shown below:
void f(const int &); // Use a constant reference.
int main () {
f(3);
return 0;
}
Or
void f(int &);
int i;
int main () {
i=3;
f(i); // Use an lvalue for reference initialization.
return 0;
}
Digraph White Space Separators
HP C++ does not support alternative tokens (digraphs). In HP aC++, digraphs are supported and
legal C++ syntax can be considered an error because of digraph substitution. Insert a blank
between two characters of the digraph.
Example:
C<::A> a;
The characters <: are one of the alternative tokens (digraphs) for which HP aC++ performs a
substitution. In this case, <: becomes [. The statement to be compiled becomes C[:A a;, which
produces many compilation errors.
To successfully compile this program with either compiler, insert a blank between < and :.
Example:
C< ::A> a;
Migration Considerations when Using Templates
In HP aC++, templates are processed differently than in HP C++ (cfront). HP aC++ does not have
a repository. All instantiations are placed in an object (.o) file (with additional information in a
.Ia file if you specify the +inst_auto command-line option). You cannot modify these files as
was possible with the files in a repository.
See Chapter 5: “Using HP aC++ Templates” (page 132) for more information.
To begin migrating code containing templates to HP aC++, try to compile and link using the default
compile-time instantiation. If this fails with compilation errors, you can compile using one of the
following:
• The +inst_all option to view all compile-time errors, including template instantiation errors.
This may generate errors that will not occur in your program, because the draft standard
allows template parameters that cannot instantiate all members. The +inst_all option forces
instantiation of such members.
• The +inst_directed option to mask compile-time template instantiation errors.
To reset after all translation units compile successfully:
1. Remove any .o and .I files. Using a clobber makefile target to remove .I files is similar to
removing the ptrepository directory in cfront.
2. Recompile and link using compile-time instantiation.
Verbose Template Processing Information
Use the +inst v option to replace the cfront -ptv option tp process verbose template information.
Migration Considerations when Using Templates 219