Странная ошибка компиляции (шаблоны)
От: LightGreen  
Дата: 25.10.12 07:25
Оценка:
При попытке скомпилировать следующий код Visual Studio Express 2005 выдаёт ошибку компиляции "unable to match function definition to an existing declaration". При этом GCC и даже Borland C++5.5 компилируют его без каких-либо проблем. С чем может быть связана эта ошибка и можно ли считать её ошибкой компилятора? Является ли этот код допустимым по стандарту языка?
template <class F>
class Container
{
public:
   class Iterator
   {
      friend class Container<F>;
      Iterator(int (&values)[F::Count]);
      int (&values_)[F::Count];
   };
   Iterator begin()
   {
      return Iterator(values_);
   }
private:
   int values_[F::Count];
};

template <class F>
Container<F>::Iterator::Iterator(int (&values)[F::Count]) : values_(values)
{}

class SomeF
{
public:
   static const int Count = 10;
};

int main(int argc, char *argv[])
{
   Container<SomeF> container;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.