Size: a a a

2021 July 02

LA

Liber Azerate in supapro.cxx
А в пункте 1 неявно инстанцируется декларация на строке 8 или 13 всё же? Спасибо за ваш подробный разбор :)
источник

VS

Vlad Serebrennikov in supapro.cxx
8 это всего лишь primary template, который ведет к специализации на строке 13
источник

LA

Liber Azerate in supapro.cxx
То есть декларация из основного шаблона вообще не инстанцируется? Ибо меня явно ввёл в заблуждение данный пример: https://eel.is/c++draft/temp#inst-example-3
Он, кстати, забавен тем, что несмотря на подпись ни в одном из компиляторов не падает
источник

AS

Ansa Sequence in supapro.cxx
template<typename T>
T& Vector3D<T>::operator[] (std::size_t index)
{  
 return (&this->x)[index];
}

Где return - это уб? С учётом того, что данные уменя не в масиве, а просто как переменные
источник

AS

Anatoly Shirokov in supapro.cxx
Если не в массиве, то да, ub
источник

AS

Ansa Sequence in supapro.cxx
А как можно сделать это с учётом того, что у меня весь класс выстроен уже так, что это переменные, а не массив
источник

AS

Anatoly Shirokov in supapro.cxx
Альтернативный доступ к членам данным по индексу:

template<typename T>
struct point {
   T x;
   T y;
   T z;
   
   constexpr T operator[](size_t index) const {
       constexpr T point::*accessors[] = {
           &point::x,
           &point::y,
           &point::z,
       };
       return this->*accessors[index];
   }
};
источник

AS

Anatoly Shirokov in supapro.cxx
вот так можно
источник

AS

Ansa Sequence in supapro.cxx
Спасибо за помощь! Попробую
источник

VS

Vlad Serebrennikov in supapro.cxx
да, не инстанцируется, аналогично
template<typename T> class A { /* def1 */ };
template<> class A<int> { /* def2 */ };
A<int> a;

def1 вообще не интересен и его может вовсе не быть, если я все правильно понимаю
источник

VS

Vlad Serebrennikov in supapro.cxx
насчет примера:

// OK, definition of C<void>​::​f is not instantiated at this point — это работает the implicit instantiation of the declarations, but not of the definitions, of the non-deleted class member functions из первого подпункта

// error: redefinition of C<int>​::​g — это работает the implicit instantiation of the definitions of deleted member functionsdefinitions of deleted member functions из второго подпункта
источник

C

CodeDetector in supapro.cxx
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

AS

Ansa Sequence in supapro.cxx
Вопрос, а что нужно курить, чтобы такое написать?
источник

LA

Liber Azerate in supapro.cxx
Да, но откуда там берётся инстанцировение определения удалённой функции, если на основной шаблон мы даже не смотрим?
источник

VS

Vlad Serebrennikov in supapro.cxx
здесь речь об инстанциации класса, а выше мы говорили об инстанциации шаблона функции-члена (когда выбирали между 8 и 13 строками). мне развить мысль или и так понятно?
источник

LA

Liber Azerate in supapro.cxx
Понятно, спасибо
источник

VS

Vlad Serebrennikov in supapro.cxx
закрыл 40 вкладок с eel.iseel.is
источник

SS

Sergey Sobolev in supapro.cxx
Теперь можно и певка открыть
источник

VS

Vlad Serebrennikov in supapro.cxx
я уж подумал, что сейчас обратно открывать буду. не, спасибо, не пью
источник
2021 July 03

AS

Anatoly Shirokov in supapro.cxx
???
источник