
template subclass needs to be public?
in VC++ 7.0 the following code does not compile, unless you remove the
comment in 4th line.
moreover, the error message looks quite strange:
d:\star\test\t03\t03.cpp(18) : error C2247: 'raise_to_pow<T>::pow<n>::apply'
not accessible because 'raise_to_pow<T>' uses 'private' to inherit from
'raise_to_pow<T>::pow<n>'
[I know the code itself seems useless, but it's just to hear if it's a known
bug or not]
template <class T>
class raise_to_pow
{
// public:
template <int n>
class pow
{
public:
static T apply(T x)
{
return x * pow<n-1>::apply(x) ;
}
};
template <>
class pow<0>
{
public:
static T apply(T x)
{
return 1;
}
};
public:
static T compute(T x)
{
return pow< sizeof(T) >::apply(x);
Quote:
}
};
int main()
{
double x = 3.14;
double y = raise_to_pow<double>::compute(x); // y = pow(3.14 ,8),
since sizeof(double) is 8
return 0;
Quote:
}
--
The set of solutions is never empty
Two solutions together form a new problem
-- Mycroft Holmes