Баг компилятора: ambiguous call to overloaded function with the same parameters (шаблоны с указателями)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Navoykov
4571
Alexey Navoykov  

Ошибка компилятора.  Не может определиться между шаблонами, хотя неоднозначности тут нет.  В верхнем шаблоне указатель a должен быть неконстантным.   В C++ всё работает.

template<typename T>
void set(T*&a, T*b) { a=b; }

template<typename T>
void set(const T*&a, const T*b) { a=b; }  // Должен вызываться этот вариант

void OnStart()
{
  const void *a;
  void *b;
  
  set(a, b);  // 'set' - ambiguous call to overloaded function with the same parameters
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий