Size: a a a

2020 July 07

v

vehlwn in pro.cxx
В чем проблема глобальные функции использовать где угодно, а не только после декларации? Один раз прошел по коту - собрал все декларации. Второй раз прошел - подставил вызовы всех функций из первого шага.
источник

O

Ofee in pro.cxx
vehlwn
Члены класса можно использовать где угодно внутри класса. Этим они отличаются от глобальных символов, которые можно юзать только после декларации. Это с вашими констекспрами что-то не так.
Класс всё же второстепенен в этой проблеме, с constexpr такое не пройдёт даже без какого-либо класса. Не получится вызвать объявленную, но не определённую функцию, это, кажется, именно то, что происходит в коде, пусть и не столь очевидным образом
источник

PK

Pavel Kazakov in pro.cxx
vehlwn
Члены класса можно использовать где угодно внутри класса. Этим они отличаются от глобальных символов, которые можно юзать только после декларации. Это с вашими констекспрами что-то не так.
Может и конкретно с ними что-то не так, да
источник

v

vehlwn in pro.cxx
Ofee
Класс всё же второстепенен в этой проблеме, с constexpr такое не пройдёт даже без какого-либо класса. Не получится вызвать объявленную, но не определённую функцию, это, кажется, именно то, что происходит в коде, пусть и не столь очевидным образом
В моей голове все определено. "Объявлено но не определено" это constrexpr int f();. В твоем примере я такого не виду.
источник

O

Ofee in pro.cxx
vehlwn
В моей голове все определено. "Объявлено но не определено" это constrexpr int f();. В твоем примере я такого не виду.
Объявлено, но ещё не определено, думаю, так лучше будет
источник

v

vehlwn in pro.cxx
Ofee
Объявлено, но ещё не определено, думаю, так лучше будет
Я то же самое сказал. Определено - это когда есть тело с фиг. скобочками.
источник

O

Ofee in pro.cxx
vehlwn
Я то же самое сказал. Определено - это когда есть тело с фиг. скобочками.
Если этот вопрос именно ко мне, а не к стандарту, то я тогда выбился из этой ветки диалога, потому что в моём примере по порядку идут объявление constexpr функции, её использование и её определение. Вот по середине у нас и появляется момент, когда уже объявлено, но ещё не определено, на что компилятор вполне справедливо и указывает в ошибке: 'foo()' used before its definition, несмотря на то, что оно ниже точно определено.

Если же это вопрос непосредственно к стандарту "почему мы не можем делать  определять constexpr функции после использования" — я не знаю на него ответ, мне тоже было бы интересно найти причину такого решения
источник

A

ARCHANGEL in pro.cxx
Парни, вот есть проблема с shared libraries, она описана здесь: https://blog.habets.se/2012/05/Shared-libraries-diamond-problem.html

Есть ли какое-то решение для прода, когда ситуация та же, но либы static?
источник

u

unt0njs in pro.cxx
Доброго дня! Я снова с вопросом по Qt: есть какие-нибудь best practices по созданию объектов графических элементов внутри класса приложения? К примеру, есть у меня главное окно, а в нем кнопка, которая создает ещё одно окно (через вызов слота newWindow() ). Тут, насколько я понимаю, три варианта объявления виджетов внутри newWindow():
1) Как встроенные объекты (в примерах встречал крайне редко, после выхода из newWindow() исчезнут)
2) С помощью new и выделения поля в классе под указатель на каждый такой виджет (тогда утечек не возникает, но выглядит громоздко и колхозно)
3??) С помощью new и последующего delete ручками внутри newWindow() (но не понятно, как быть, если окно должно жить после выхода из newWindow() ).
Я запутался и прошу направить поток сознания в нужную сторону :)
источник

Е

Егор in pro.cxx
unt0njs
Доброго дня! Я снова с вопросом по Qt: есть какие-нибудь best practices по созданию объектов графических элементов внутри класса приложения? К примеру, есть у меня главное окно, а в нем кнопка, которая создает ещё одно окно (через вызов слота newWindow() ). Тут, насколько я понимаю, три варианта объявления виджетов внутри newWindow():
1) Как встроенные объекты (в примерах встречал крайне редко, после выхода из newWindow() исчезнут)
2) С помощью new и выделения поля в классе под указатель на каждый такой виджет (тогда утечек не возникает, но выглядит громоздко и колхозно)
3??) С помощью new и последующего delete ручками внутри newWindow() (но не понятно, как быть, если окно должно жить после выхода из newWindow() ).
Я запутался и прошу направить поток сознания в нужную сторону :)
источник

u

unt0njs in pro.cxx
Спасибо
источник

v

vehlwn in pro.cxx
Ofee
Класс всё же второстепенен в этой проблеме, с constexpr такое не пройдёт даже без какого-либо класса. Не получится вызвать объявленную, но не определённую функцию, это, кажется, именно то, что происходит в коде, пусть и не столь очевидным образом
>inline constexpr static int foo() noexcept;

А ну да. Вызывать это невалидно. Это было еще в докладе Антона К. про лупхолы. Ваши констекспры сломаны.
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
а может ли быть namespace, имя которого совпадает с существующим классом? При условии, что никакие вложенные имена между ними не конфликтуют, т. е. фактически неопределенности нет.
Может, но надо будет часто указывать полное имя (говорю за msvc)
источник

A

Alex in pro.cxx
Хм, а я попробовал - msvc меня сразу в лес отправил
источник

v

vehlwn in pro.cxx
Alex
а может ли быть namespace, имя которого совпадает с существующим классом? При условии, что никакие вложенные имена между ними не конфликтуют, т. е. фактически неопределенности нет.
Да. Но это нечитаемо.
источник

A

Alex in pro.cxx
А компилятор говорит, что нет https://godbolt.org/z/LN8Y3s
источник

v

vehlwn in pro.cxx
Alex
А компилятор говорит, что нет https://godbolt.org/z/LN8Y3s
Так я про класс внутри неимспайса говорил. У тебя тут конечно же неоднозначность.
источник

v

vehlwn in pro.cxx
vehlwn
>inline constexpr static int foo() noexcept;

А ну да. Вызывать это невалидно. Это было еще в докладе Антона К. про лупхолы. Ваши констекспры сломаны.
Джонни, я не чувствую констекспр.
источник

IZ

Ilia Zviagin in pro.cxx
ARCHANGEL
Парни, вот есть проблема с shared libraries, она описана здесь: https://blog.habets.se/2012/05/Shared-libraries-diamond-problem.html

Есть ли какое-то решение для прода, когда ситуация та же, но либы static?
А в 2 слова в чем проблема?
источник

IZ

Ilia Zviagin in pro.cxx
ARCHANGEL
Парни, вот есть проблема с shared libraries, она описана здесь: https://blog.habets.se/2012/05/Shared-libraries-diamond-problem.html

Есть ли какое-то решение для прода, когда ситуация та же, но либы static?
Прочитал сам. Решения нет ни для той проблемы в статье, ни для твоего варианта. Библиотеки должны быть все одной версии в одном приложении
источник