Size: a a a

2020 June 03

AS

Anatoly Shirokov in pro.cxx
osm1um
#include <cstdio>

template <class _type, size_t _size>
class array
{
public:

using element_type = _type;

constexpr size_t size() const {
 return _size;
}

private:

_type _storage[_size];

};

int main() {
   array<char, 8> arr;
   printf("%zu\n", arr.size());
   return 0;
}
https://godbolt.org/z/Me5SBW - все у тебя найс, const лишний для constexpr мембер функции
источник

ПК

Побитый Кирпич... in pro.cxx
Например присвоить constexpr переменной
источник

o

osm1um in pro.cxx
Ребята, кажется мне, что вы меня не поняли. С кодом всё круто, он отлично работает. Проблема в том, что мне нужно константить результат size() в compile time. Вот есть constexpr в моём любимом C++17 и он почему-то не работает. Вот у меня вопрос: почему?
источник

AS

Anatoly Shirokov in pro.cxx
osm1um
Ребята, кажется мне, что вы меня не поняли. С кодом всё круто, он отлично работает. Проблема в том, что мне нужно константить результат size() в compile time. Вот есть constexpr в моём любимом C++17 и он почему-то не работает. Вот у меня вопрос: почему?
потому ты вызываешь его в runtime-e
источник

ПК

Побитый Кирпич... in pro.cxx
osm1um
Ребята, кажется мне, что вы меня не поняли. С кодом всё круто, он отлично работает. Проблема в том, что мне нужно константить результат size() в compile time. Вот есть constexpr в моём любимом C++17 и он почему-то не работает. Вот у меня вопрос: почему?
Прочитай ещё раз моё сообщение
источник

AS

Anatoly Shirokov in pro.cxx
сделай
constexpr size_t size = arr.size();
, получишь константу, не будет вызова https://godbolt.org/z/YOZliF
источник

o

osm1um in pro.cxx
У. Вон как эта чуда работает.
источник

o

osm1um in pro.cxx
Слушайте и что, великий С++ не сможет делать этого без доп. compile time буфера?
источник

ПК

Побитый Кирпич... in pro.cxx
osm1um
У. Вон как эта чуда работает.
В с++20 будет полноценный (почти) consteval, который тебе здесь нужен
источник

АК

Александр Караев... in pro.cxx
osm1um
Слушайте и что, великий С++ не сможет делать этого без доп. compile time буфера?
поставь оптимизацию хотя бы -O1, иначе ты будешь в шоке, что великий С++ даже std::move не заинлайнит
источник

ПК

Побитый Кирпич... in pro.cxx
osm1um
Слушайте и что, великий С++ не сможет делать этого без доп. compile time буфера?
Может, ты же сделал поле
источник

ПК

Побитый Кирпич... in pro.cxx
А методы без использования полей (как у тебя) уже не в моде, щас в моде свободные функции
источник

o

osm1um in pro.cxx
Александр Караев
поставь оптимизацию хотя бы -O1, иначе ты будешь в шоке, что великий С++ даже std::move не заинлайнит
Капец. Ну всё... Иду писать на Rust'е 😂
источник

MB

Mikail Bagishov in pro.cxx
osm1um
Капец. Ну всё... Иду писать на Rust'е 😂
раст тоже вряд ли уберет memcpy без включенных оптимизаций
источник

DF

Dollar Føølish in pro.cxx
Уберет , если она без сайд эффектов
источник

DF

Dollar Føølish in pro.cxx
А,без оптимизаций интересно конечно
источник

MB

Mikail Bagishov in pro.cxx
Dollar Føølish
Уберет , если она без сайд эффектов
не, ну  в LLVM я верю :)
источник

DF

Dollar Føølish in pro.cxx
Но речь по моему не про сам мув была выше а про вызов каста то есть STD::move()
источник

o

osm1um in pro.cxx
Короче, ребята. Простите сонного муха. Там реально в оптимизациях проблемы были. Только врубился, что у меня дебажная сборка 😂
источник

D

Danya in pro.cxx
Александр Караев
поставь оптимизацию хотя бы -O1, иначе ты будешь в шоке, что великий С++ даже std::move не заинлайнит
Там будет просто ret?)
источник