At 01:10 PM 3/4/2003, Jason House wrote:

>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.

No.  There must be only one definition of MyParam.

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

Maybe.

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

Reply via email to