Boost logo

Boost :

From: Jason House (jhouse_at_[hidden])
Date: 2003-03-04 15:10:26

James Curran wrote:
> 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;

  Thanks for the clarification... and that requirement does make sense.
  I'll still be a pain in the butt and ask more questions :)

  If I understand correctly, each file that uses SomeClass<MyParam> will
compile in its own version of SomeClass. Will a compiler remove the
duplicate versions and leave only one copy of SomeClass<MyParam>?

Another quesion:

template <const char *S> SomeClass { ...};
extern const char* MyParam_1 = "MyParam";
extern const char* MyParam_2 = "MyParam";

then would
typeof(SomeClass<MyParam_1>) == typeof(SomeClass<MyParam_2>)
be true?

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