template< typename T1> or template< class T1>
llewelly@xmission.com
llewelly@xmission.com
Sat May 15 03:22:00 GMT 2004
Jeffrey Holle <jeff.holle@verizon.net> writes:
> Which is the preferred syntax?
> Are these equivalent?
In this context, 'typename' and 'class' are equivalent.
> Can anything else besides "typename" or "class" be used?
There are template template parameters (14.3.3):
template<class t> struct foo{};
template<template<class t>class f>
struct bar
{
f<int> g;
};
int main()
{
bar<foo> b;
}
template non-type parameters (14.3.2), which can be integral types,
pointer types, reference types, or pointer to member types:
#include<iostream>
template<int size>
struct use_int
{
char a[size];
};
template<void(*f)()>
struct use_f
{
void call_f(){f();}
};
template<char** message,std::ostream& os>
struct use_ptr
{
std::ostream& print()
{
return os << *message;
}
};
void g()
{
std::cout << "Called g()." << std::endl;
}
char* cp= "some message";
int main()
{
use_int<10> a;
use_f<g> b;
b.call_f();
use_ptr< &cp, std::cout > c;
c.print(); std::cout << std::endl;
}
More information about the Gcc-help
mailing list