|
|
|
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Намекают - сильно сказано! Не сомневаюсь что с вашей выдающейся способностью к софистике и из туманных намеков в купе с "still" и "if" можно вывести все что угодно... Это сообщение отредактировал(а) volatile - 16.6.2013, 00:03 |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
иногда достаточно просто перечитать заново и вникнуть в пропущенное при первом чтении Добавлено через 2 минуты и 58 секунд ладно, чтоб не уходить в переспоривание озвучу свою трактовку с коментариями.. |
|||
|
||||
mes |
|
||||||||||||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
в старом с++ не было constexpr, хотя само константное выражение (как понятие) было. Чтоб получить большую эффективность, пользователю позволяется ассоцировать интегральную константу с константным выражением. После чего, при употреблении в выражениях ожидающих константное выражение, оно подставляется вместо самой константы.. Самый простой пример
В этом случае константа не участвует в процессе, она лишь служит переносчиком константного выражения.. Теперь подойдем к классу и нашей цитате..
ну тут понятно без пояснений
ее объявление (именно объявление, не определение) может быть специфицировано констным выражением. "Объявление" нам говорит, что объект (в памяти) не определен.
В этом случае дата-член может появляться в константном выражении.. Как раз об этом говорилось в начале поста..Не забывайте, что объект (lvalue в терминах c++) пока не определен.
дата-член должен быть к тому же определен вне класса, если используется в программе. Вот тут наконец то определяем сам объект.. И обратите внимание в первом случае было "появляeтся" (can appeаr), а теперь "используется" (used), потому как в первом случае у нас имелась только декларация, и использования объекта не было..
ну тут опять без фокусов, если указали инициализатор при декларации в классе, то при определении вне класса он должен отсутствовать.. Ну вроде и все.. Это сообщение отредактировал(а) mes - 16.6.2013, 10:58 |
||||||||||||
|
|||||||||||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
||||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Мес, не обижайтесь, не стоило здесь приводить это все. (хотя еще раз спасибо).
Да я прекрасно понял что вы хотите сказать. Я и без того, разделяю ваше мнение насчет подстановки констант. Еще в начале: Беда только в том что все это являецца лишь логическим выводом. И бездоказательно, к сожалению. |
|||
|
||||
mes |
|
||||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Bjarne Stroustrup - ему можно верить ? The C++ Programming Language (Third Edition)
Добавлено @ 13:09 в его ж d&e тоже вроде было на эту тему..
хотя да, опять догадки.. никаких выводов Это сообщение отредактировал(а) mes - 16.6.2013, 16:16 |
||||
|
|||||
volatile |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
borisbn, насколько удалось выяснить в codepad.org например, она включена.
Почему в таком случае, он выдает ошибку, (а 4.7.0 абсолютно при тех-же ключах не выдает) остаецца только гадать... Впрочем не сомневаюсь что mes, опираясь на пару, тройку "still" и "if" в стандарте, выведет "основательное доказательство" и этому факту. Это сообщение отредактировал(а) volatile - 16.6.2013, 23:54 |
||||
|
|||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
mes, я тут на досуге почесал репу, и понял что мне мешает воспринимать ваши доводы.
Важный вопрос (для меня). У меня есть убежденность, как должен звучать правильный ответ. Но сие убеждение, основано какбы э.... на вере в некую "космическую гармонию" =) Но возможно "гармонию" я придумал, и на самом деле ее нет. И так: Рассмотрим некий абстрактный идеальный случай: одна машина, одна операционка, одинаковое окружение, одни и теже библиотеки и т.д. и т.д. один С++ код, без "undefined behavior" и "implementation defined" И есть два разных, строго_соответствующих_стандарту С++ компилятора. (само собой без багов) Утверждение: Удачная компиляция+сборка на одном компиляторе не дает никаких гарантий, что на другом компиляторе этот же код будет компилироваться+собираться. Вопрос: Справедливо ли по вашему это утверждение? пожалуйста, ДА или НЕТ ? (Без каких-то дополнительных условий. Вопрос звучит так, как он звучит.) Добавлено через 34 секунды Или может голосование устрить? но прежде всего, я хотел бы услышать ваше мнение. |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
да, если код ill-formed при этом ill-formed код может компилироваться и работать вполне нормально, а может и нет.. нет, если код well-formed и компиляторы соответствуют стандарту.. да + нет -> ДА Это сообщение отредактировал(а) mes - 23.6.2013, 21:15 |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
volatile, я тут на досуге почесал репу, и понял что вам мешает воспринимать мои доводы
утверждение малость вывернуто наизнанку.. удачная компиляция+сборка вообще никаких гарантий не дает. гарантии может дать только строгое соответствие кода и компилятора общему стандарту.. для того стандарты и придуманы.. только вот некоторые стандарты несколько расплывчаты, чтоб развязать руки производителям компиляторов, в итоге сложность соблюдения соответствия увеличивается.. плюс некоторым хочется понравится пользователю и они предлагают собственные расширения, иногда противоретящие основным правилам.. но в итоге: только well-formed код с одной стороны, и соответствующий этим правилам (не обязательно основному стандарту) компилятор с другой стороны могут гарантировать успешность предприятия Это сообщение отредактировал(а) mes - 27.6.2013, 21:03 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | GNU toolchain | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |