Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, Аноним, Вы писали:
А>>Есть нечто вроде
А>>struct S{
А>> int operator[]( int i ){ ... }
А>>};
А>>Хочу сделать, чтобы помимо этого была специализация для случая, когда в качестве i передаётся константа 0.
Н>Если i известно только в рантайме (что, скорее всего, так и есть), то подойдет только такая "специализация":
Н>Н>int S::operator [] (int i)
Н>{
Н> if(0 == i)
Н> // ...
Н> else
Н> // ..
Н>}
Н>
Н>Если же во время компиляции, то так:
Н>Н>template <int I>
Н>struct S
Н>{
Н> // ...
Н>};
Н>template<>
Н>struct S<0>
Н>{
Н> // ...
Н>};
Н>
Да, вот только шаблон для оператора хотелось бы. Причём, чтобы в зависимости от того переменная или 0 передаются в оператор, выбиралась соответствующая специализация.