Re: templated constanst
Javier Loureiro wrote:
I just read the "limits" header (included with visual 2003),
and it uses the macro :
#define _STCONS(ty, name, val) static const ty name = (ty)(val)
to declare numeric_limits member variables like has_infinity,
is_integer, etc, inside a struct declaration...
I wrote this simple code using such macro and the limits class
inheritance, and it does not compile...
#define MY_STCONS(ty, name, val) static const ty name = (ty)(val)
namespace mystd {
struct num_base
{
MY_STCONS(bool, is_bounded, false);
MY_STCONS(bool, is_exact, false);
};
template <class T>
struct num_procs : public num_base
{
inline static foo() { return T(0); }
};
struct num_int_base : public num_base
{
MY_STCONS(bool, is_bounded, false);
MY_STCONS(bool, is_exact, false);
};
template <> struct num_procs<int> : public num_int_base
{
typedef int T;
inline static foo() { return T(20); }
};
What's the error message? I see an obvious error in the fact
that you don't declare a return type for the functions foo(),
but that error should be clear from the error message. The rest
seems OK at first glance.
--
James Kanze GABI Software
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]