Ошибки, баги, вопросы - страница 2006

 
Комбинатор:
Так компилится, изначальный вариант и не должен.

Почему?

template<typename T>
struct B {
        void f( T, const T ) {}
};
class A {};
void OnStart()
{
          const A* a;
        B<const A*> b;
        b.f( a, a ); //нормально
}

так то - все нормально. А что принципиально изменилось?

template<typename T>
        void f( T, const T ) {}
class A {};
void OnStart()
{
          const A *a;
          f( a, a ); //error: 'a' - cannot convert from const pointer to nonconst pointer
}
 
A100:

А что принципиально изменилось?

Разница огромная! Вот, что Вы вызвали

void B<const A*>::f(const A*,const A*)
Компилятор бажит в том смысле, что не может догадаться до нужного корректного варианта шаблона. Явно подсказал ему
template<typename T>
        void f( T, const T ) {}
class A {};
void OnStart()
{
          const A *a;
          f<const A*>( a, a );
}

И все заработало.

 
fxsaber:
 И все заработало.

 А зачем лишние символы?

 
A100:

 А зачем лишние символы?

Чтобы показать, что компилятор не догадывается до вполне рабочего варианта шаблона.

 
fxsaber:

Чтобы показать, что компилятор не догадывается до вполне рабочего варианта шаблона.

А зачем? СервисДеск сам в состоянии разобраться

 
A100:

Почему?

Судя по вашей специализации у типа должен отбрасываться const, что и делается. При явном указании нужного типа конечно же будет компилиться.
 
A100:

А зачем? СервисДеск сам в состоянии разобраться

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2017.09.18 03:10

Вообще я шаблоны использую редко - в детали не вдавался - могу объяснить только на интуитивном уровне

 
Господа! Ваши объяснение на научном уровне что якобы нужно явное указание опровергаются тем что С++ компилирует без ошибок и предупреждений
 
A100:
Господа! Ваши объяснение на научном уровне что якобы нужно явное указание опровергаются тем что С++ компилирует без ошибок и предупреждений

Вы читаете то, что хотите. Никакого явного указания не требуется, просто компилятор в текущем билде не в состоянии этого понять и это баг, как правильно Вы заметили. В данном разговоре нет тупого желания кого-то защитить или зачморить. В коде и комментариях написано ровно то, что написано, и ничего нет между строк.

 

Странный коэффициент Шарпа "-nan(ind)".


И, столбец "результат" ну не должен быть положительным - неужели это нельзя реализовать!?