Size: a a a

2021 February 23

RM

Roy Mustang in supapro.cxx
Да, падает
источник

AM

Alex Menzfolder in supapro.cxx
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
источник

RM

Roy Mustang in supapro.cxx
@oficsu вот рабочий вариант, взял из cppref
https://onlinegdb.com/rySnoRbzd
источник

AM

Alex Menzfolder in supapro.cxx
Возьмём даже те же
источник

RM

Roy Mustang in supapro.cxx
Только я не понял, что значит template<class...> class Op внутри template
источник

RM

Roy Mustang in supapro.cxx
Alex Menzfolder
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
Чтоб явно указать тип? У тебя 0.5 - это double, а слева float, неявный каст скорее всего будет, но хз чем это черевато, думаю, что в твоем случае ничем
источник

RM

Roy Mustang in supapro.cxx
auto wtf = 0.5;
auto wtff = 0.5f;
В первом случае - double, во втором float
источник

AM

Alex Menzfolder in supapro.cxx
Если заюзать constexpr, то он же должен бын обработан уже во время компиля, как флот, разве нет?
источник

RM

Roy Mustang in supapro.cxx
Alex Menzfolder
Если заюзать constexpr, то он же должен бын обработан уже во время компиля, как флот, разве нет?
Да он и так будет во время компиляции обработан, как float, там компилятор сам знает что с этим делать
источник

AM

Alex Menzfolder in supapro.cxx
Тогда это не грозит мне неявным кастом
источник

O

Ofee in supapro.cxx
Roy Mustang
Только я не понял, что значит template<class...> class Op внутри template
Принимаем не тип, а сам шаблон, принимающий любое число шаблонных (типовых) параметров
foo<std::vector> вместо конкретного foo<std::vector<int>>
источник

RM

Roy Mustang in supapro.cxx
Ofee
Принимаем не тип, а сам шаблон, принимающий любое число шаблонных (типовых) параметров
foo<std::vector> вместо конкретного foo<std::vector<int>>
Понял, что ничего не понял. Такой синтаксис не часто встретишь, но мне кажется суть я догнал, но пока не представляю где это может быть использовано
источник

O

Ofee in supapro.cxx
Roy Mustang
Понял, что ничего не понял. Такой синтаксис не часто встретишь, но мне кажется суть я догнал, но пока не представляю где это может быть использовано
Ну, например, в... is_detected. Для обеспечения ленивого инстанцирования (чтобы отложить падение до SFINAE-контекста в detector)
источник

AM

Aleksander Mironov in supapro.cxx
Я правильно понял, что нельзя наследоваться от виртуального шаблонного класса?
источник

GG

Gena Gore In in supapro.cxx
Попытался замерить время работы copy и copy_n на векторах с интами. Вышло, что copy_n быстрее. Это правда или я что-то сделал не так?
источник

IZ

Ilia Zviagin in supapro.cxx
Ilya
буквально в двух словах, если сможете
В двух словах -
printf("%03.3d", k)

Что-то типа этого, но тебе придется сверить с документацией
источник

IZ

Ilia Zviagin in supapro.cxx
Gabriel
Ну так я могу делать так как в первом? Это нормальный стиль?
Не делай вообще inline, делай вариант 1.

Inline не нужен.
источник

IZ

Ilia Zviagin in supapro.cxx
Gabriel
Так а почему её собирать не надо?)
Ты учти, что header only library - это плохо.
источник

IZ

Ilia Zviagin in supapro.cxx
Aleksander Mironov
Я правильно понял, что нельзя наследоваться от виртуального шаблонного класса?
Можно
источник

IZ

Ilia Zviagin in supapro.cxx
Alex Menzfolder
Может я тему с литералами проебал, а может и нет.

Но, объясните мне смысл. Толку использовать литералы после инициализации перменной уже, как *константу*?

Вот, конкретный пример :

float A = 0.5;
cout << "A = 0.5 " << sizeof(A) << endl;
float B = 0.5F;
cout << "B = 0.5 " << sizeof(B) << endl;

Обе эти переменные будут иметь фиксированный размер на 64 битной машине в 4б
Я не понял вопрос, но для начала 0.5 - это double 0,5f - float.
источник