Boost logo

Boost :

From: James Curran (jamescurran_at_[hidden])
Date: 2003-03-04 13:10:46

Jason House wrote:
> Well, I know that in MSVC simply refuses to use strings as template
> parameters... If this truly is illegal by the standard, then a string
> template parameter could default to a type for that string. As far as
> use in other places, maybe use of some keyword as a function. Like
> maybe struct("foo").

    Both the Standard & MSVC6 allow a (const char*) as a template parameter.
What is rejected (by both) is a text literal parameter. For a non-type
parameter, the value must be a constant across all translation units linked
together, hence it must be defined extern.

    template <const char* S> SomeClass { ...};

    SomeClass<"YourParam"> NoGood;

extern const char* MyParam = "MyParam";
    SomeClass<MyParam> Acceptable;

James Curran (personal) (professional)

Boost list run by bdawes at, gregod at, cpdaniel at, john at