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:

if
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?

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to