ошибка "недопустимое использование неполного типа" с частичной специализацией шаблона

Хотя coppro уже упомянул template два решения, а Anonymous partial-specialization объяснил второе, мне потребовалось c++ некоторое время, чтобы понять template первое. Возможно, следующий partial-specialization код будет полезен тем, кто partial-specialization наткнется на этот сайт, который, как templates и я, по-прежнему занимает cxx высокие позиции в Google. Пример template (передача вектора / массива cpp / отдельного элемента числового c++ T как dataT и последующий cpp доступ к нему через [] или cxx напрямую), конечно, несколько c++ надуманный, но он должен c++ проиллюстрировать, как вы gcc на самом деле можете очень cpp близко подойти к частичной c++ специализации функции-члена, обернув cpp ее. в частично специализированном gcc классе.

/* The following circumvents the impossible partial specialization of 
a member function 
actualClass::access
as well as the non-nonsensical full specialisation of the possibly
very big actualClass. */

//helper:
template 
class specialised{
public:
  numericalT& access(dataT& x, const unsigned int index){return x[index];}
};

//partial specialisation:
template 
class specialised{
public:
  numericalT& access(dataT& x, const unsigned int index){return x;}
};

//your actual class:
template 
class actualClass{
private:
  dataT x;
  specialised accessor;
public:
  //... for(int i=0;i

c++

gcc

templates

partial-specialization

2022-10-04T14:31:16+00:00
Вопросы с похожей тематикой, как у вопроса:

ошибка "недопустимое использование неполного типа" с частичной специализацией шаблона