Size: a a a

cxx.Дискуссионная

2020 April 12

RM

Roy Mustang in cxx.Дискуссионная
Щас гляну какая там перегрузка
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Ты имеешь в виду что нельзя возвращать дочерний объект если родительский тоже является объектом?
А... Вот пример с cppreference:
for (auto& x : foo().items()) { /* .. */ } // undefined behavior if foo() returns by value
источник

RM

Roy Mustang in cxx.Дискуссионная
Все норм, по ссылке возвращает
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
А... Вот пример с cppreference:
for (auto& x : foo().items()) { /* .. */ } // undefined behavior if foo() returns by value
Да
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Все норм, по ссылке возвращает
Тогда считай, что повезло, но лучше не рисковать с таким кодом
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Тогда считай, что повезло, но лучше не рисковать с таким кодом
Да это пару раз поработать и запомнится
источник

D

Danya in cxx.Дискуссионная
Roy Mustang
Никак не найду, можно в range base loop for делать for-init-statement?
В каком-то С++ точно можно
Либо 17, либо 20
источник

O

Ofee in cxx.Дискуссионная
Danya
В каком-то С++ точно можно
Либо 17, либо 20
20, да
источник

O

Ofee in cxx.Дискуссионная
Может кто объяснить, что тут не так? Вот этот код не рабочий:
template<bool B, typename U>
constexpr std::size_t size() {
   // some magic with template parameters
   return sizeof(U) + sizeof(decltype (B));
}

template<bool B, typename U, std::size_t = size<B, U>()>
struct X {};

template<bool B>
struct X<B, int> {};
      ^
error: type of specialized non-type template argument depends on a template parameter of the partial specialization

А вот этот, кажется, рабочий:
template<bool B, typename U,
        // some magic with template parameters
        std::size_t = sizeof(U) + sizeof(decltype (B))>
struct X {};

template<bool B>
struct X<B, int> {};


Так точно должно быть?
источник

D

Danya in cxx.Дискуссионная
Ofee
Может кто объяснить, что тут не так? Вот этот код не рабочий:
template<bool B, typename U>
constexpr std::size_t size() {
   // some magic with template parameters
   return sizeof(U) + sizeof(decltype (B));
}

template<bool B, typename U, std::size_t = size<B, U>()>
struct X {};

template<bool B>
struct X<B, int> {};
      ^
error: type of specialized non-type template argument depends on a template parameter of the partial specialization

А вот этот, кажется, рабочий:
template<bool B, typename U,
        // some magic with template parameters
        std::size_t = sizeof(U) + sizeof(decltype (B))>
struct X {};

template<bool B>
struct X<B, int> {};


Так точно должно быть?
Тебя тоже забанили в супе?
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Что значит тоже?
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Меня вот забанили
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Да
источник

O

Ofee in cxx.Дискуссионная
Danya
Тебя тоже забанили в супе?
Да, я слишком сонный и мне даже лень воспроизводимость примера проверять...
источник

O

Ofee in cxx.Дискуссионная
Ofee
Да, я слишком сонный и мне даже лень воспроизводимость примера проверять...
Тут никто не осудит, сами подписались
источник

VD

Vlad Doc in cxx.Дискуссионная
Это уже такая традиция банится в супе?
источник

O

Ofee in cxx.Дискуссионная
Vlad Doc
Это уже такая традиция банится в супе?
Вот как захочу — тогда и разбанюсь с этим вопросом
источник

D

Danya in cxx.Дискуссионная
Ofee
Может кто объяснить, что тут не так? Вот этот код не рабочий:
template<bool B, typename U>
constexpr std::size_t size() {
   // some magic with template parameters
   return sizeof(U) + sizeof(decltype (B));
}

template<bool B, typename U, std::size_t = size<B, U>()>
struct X {};

template<bool B>
struct X<B, int> {};
      ^
error: type of specialized non-type template argument depends on a template parameter of the partial specialization

А вот этот, кажется, рабочий:
template<bool B, typename U,
        // some magic with template parameters
        std::size_t = sizeof(U) + sizeof(decltype (B))>
struct X {};

template<bool B>
struct X<B, int> {};


Так точно должно быть?
В первый раз ты не полностью специализировал шаблон
источник

D

Danya in cxx.Дискуссионная
Хотя во второй раз тоже
источник

O

Ofee in cxx.Дискуссионная
Danya
В первый раз ты не полностью специализировал шаблон
Так шаблон одинаков в обоих случаях, просто в одном случае шаблонная constexpr функция вычисляет какую-то магию, а во втором, я это напрямую делаю
источник