Есть класс:
template <class T, int rank> class BaseArray
{
T& operator[](int i);
};
template <class T> class BaseArray<T, 1>
{
T& operator[](int i);
};
template <class T, int rank = 1> class Array : public BaseArray<T, rank>
{
};
При попытке обратиться к элементу массива следующим образом:
Array<wchar_t> array(10);
wchar_t a;
a = array[a];
Компилятор выдает сообщение:
error C2666: 'System::BaseArray<T,rank>::operator`[]'' : 2 overloads have similar conversions
with
[
T=wchar_t,
rank=1
]
<Неполный путь к файлу... ???>
or 'built-in C++ operator[(wchar_t *, wchar_t)'
Что за built-in оператор такой?
Здравствуйте, Kalushin, Вы писали:
Приведенный пример (после исправления ошибок, связанных с видимостью операторов) компилируют Comeau и VC7.1.
K>Что за built-in оператор такой?
wchar_t arr[10];
wchar_t i = 0, r;
r = arr[i];
Скорее всего у тебя есть преобразование к указателю на что-нить (к примеру, на T*) — при подготовке тестового примера ты его шлёпнул. Вся проблема в нём.