Глава «Шаблоны» в стандарте C ++ 03 начинается со следующего:
A template определяет семейство классов или функций.
<i>template-declaration:
export<sub>opt</sub> template < template-parameter-list > declaration
template-parameter-list:
template-parameter
template-parameter-list , template-parameter
</i>
объявление в шаблонном объявлении должно
- объявить или определить функцию или класс, или
- определить функцию-член, класс-член или статический элемент данных шаблона класса или класса, вложенного в шаблон класса, или
- определить шаблон-членкласс или шаблон класса.
A шаблон-объявление - это объявление . шаблон-объявление также является определением, если его объявление определяет функцию, класс или статический член данных.
Итак, из того, что я понимаючтение полужирного текста означает, что мы можем определить статический шаблон данных-элемента , в дополнение к class -template и function-template ,Но я никогда не видел static data-member-template .Как именно это определяется?Я попробовал следующее, но GCC не принимает его ( ideone ):
template<typename T> struct X{};
template<typename T>
struct A
{
template<typename U> static X<U> data_member;
};
Поэтому я начал сомневаться в том, правильно ли я понял цитату.Что именно мне не хватает?Или как именно мы можем определить шаблон элемента статических данных?Что означает жирный текст?