Сообщение Re[3]: Объясните ошибку компиляции от 22.01.2018 13:56
Изменено 22.01.2018 13:56 rg45
Re[3]: Объясните ошибку компиляции
Здравствуйте, MTD, Вы писали:
C>>T = const A&, т.е. надо избавиться от ссылки и квалификатора const, чтобы получить "голый" тип A.
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>Спасибо, непонятно только почему если есть константность, то компилятор статический метод не видит
Он не видит статический метод не потому, что этот тип константный, а потому, что этот тип — ссылка. Вот так тоже будет работать, в этом конкретном случае:
C>>T = const A&, т.е. надо избавиться от ссылки и квалификатора const, чтобы получить "голый" тип A.
MTD>Спасибо, непонятно только почему если есть константность, то компилятор статический метод не видит
Он не видит статический метод не потому, что этот тип константный, а потому, что этот тип — ссылка. Вот так тоже будет работать, в этом конкретном случае:
template <class T>
void bar(T&& t)
{
std::remove_reference_t<T>::foo();
}