я узнал, что:nontypes параметров шаблона
- параметры шаблона нетиповые выполнять некоторые ограничения. В общем, они могут быть постоянными интегральными значениями (включая перечисления) или указателями на объекты с внешней связью.
Так я сделал следующий код
1.
template <char const* name>
class MyClass {
…
};
char const* s = "hello";
MyClass<s> x; // ERROR:
Этот код не работает и производит ошибки 's' is not a valid template argument
Мой второй код также не работал
2.
template <char const* name>
class MyClass {
…
};
extern char const *s = "hello";
MyClass<s> x; //error 's' is not a valid template argument`
Но странно этот код прекрасно
3.
template <char const* name>
class MyClass {
…
};
extern char const s[] = "hello";
MyClass<s> x; // OK
, пожалуйста, что происходит во всех этих трех кодов ??
также расскажите, как исправить ошибки, чтобы другие другие коды работали также.
Ах, старый 'const *' vs '* const' каштан ... –