Информация об изменениях

Сообщение Re[3]: Объясните ошибку компиляции от 22.01.2018 13:56

Изменено 22.01.2018 13:56 rg45

Re[3]: Объясните ошибку компиляции
Здравствуйте, MTD, Вы писали:


C>>T = const A&, т.е. надо избавиться от ссылки и квалификатора const, чтобы получить "голый" тип A.

MTD>Спасибо, непонятно только почему если есть константность, то компилятор статический метод не видит

Он не видит статический тип не потому, что этот тип константный, а потому, что этот тип — ссылка. Вот так тоже будет работать, в этом конкретном случае:

template <class T>
void bar(T&& t)
{
    std::remove_reference_t<T>::foo();
}
Re[3]: Объясните ошибку компиляции
Здравствуйте, MTD, Вы писали:


C>>T = const A&, т.е. надо избавиться от ссылки и квалификатора const, чтобы получить "голый" тип A.

MTD>Спасибо, непонятно только почему если есть константность, то компилятор статический метод не видит

Он не видит статический метод не потому, что этот тип константный, а потому, что этот тип — ссылка. Вот так тоже будет работать, в этом конкретном случае:

template <class T>
void bar(T&& t)
{
    std::remove_reference_t<T>::foo();
}