В шаблонизированных классах нужно явно указывать наследованные члены класса
a = 1; - это попытка обращения к полю через неквалифицированный доступ.this для квалификации, хоть это и работает, использовать в таком случае вообще неправильно.using Base<T>::var; - это операция создания псевдонима поля в локальной области видимости шаблона типа. И это не всегда удобно. И это приведет к проблемам если такое имя уже есть в локальной области шаблона типа или если ты это поле переименуешь в базовом шаблоне. А еще это снова будет сбивать тебя с толку, т.к. в месте работы с полем не будет понимания, откуда это поле взялось.template <class T>
class Derived : private Base<T>
{
public:
using Parent = Base<T>;
Derived() {
Parent::a = 1;
Parent::b = 2;
Parent::c = 3;
}
};this вообще?this оправдано в исчезающе малом количестве случаев.conio.h не определяет нажатие клавиш на клавиатуре. Эта библиотека дает доступ к чтению потока ввода консоли, который может производиться не с клавиатуры, а из файла или вывода другой программы.conio.h даст доступ к тому, что не работает.нашел исходники , решил затестить
time [?]. В системах, которые придерживаются спецификации POSIX, результат можно интерпретировать как количество секунд. Т.е. раз в секунду результат time( nullptr ) будет меняться. Именно это и видно в приведенном тобой листинге.Сумма массива под номером 9 равна 73
Сумма массива под номером 10 равна 76const играет большую роль в понимании кода читателем. Something первые 8 байт отданы на vtable, следующие 4 байта - на int some_field. Там без padding-а, все верно. Итого получается 12 байт.Something равно 8 байт, т.к. в его составе есть указатель vtable.return в ее теле. Все прочие return обязаны в таком случае возвращать значение точно того же типа.std::function func{ ... };.std::function<Y ( int )> func{
[]( int z ) -> Y
{
if( z > 0 )
{
return X{};
}
return Y{};
}
};return отличается от типа значения верхнего return.std::begin и std::end для определения границ итерирования. Голый указатель на память неизвестного размера принципиально не способен дать информацию ни о начале диапазона итерирования, ни о его конце.std::span[?] если ты пишешь в стандарте C++20. Иначе для тебя будет лучше найти или создать аналог std::span если ты хочешь использовать именно range-based for-loop в коде.