Здравствуйте, igna, Вы писали:
I>Согласно этому правилу std:auto_ptr и boost::shared_ptr нужно инициализировать по разному. Я правильно понял?
Да, и это хорошо, так как подчёркивает отсутствие семантики значения у std:auto_ptr...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, fay, Вы писали:
fay>Предпочитаю первый... Такая ошибка может обернуть веселыми минутами...
fay>int i(10);
fay>int i[10];
Честно говоря не вижу проблемы. Наверное можно сконструировать какой-нибудь (скорее искуственный) пример, но в большинстве случаев компилятор выдаст сообщение об ошибке когда попытаешься использовать целое вместо массива целых или наоборот.
Здравствуйте, igna, Вы писали:
I>Угу, а формальное определение семантики значения у тебя есть?
Копируемый, присваеваемый объект, который представляет сам себя и все копии которого эквивалентны.
А зачем это всё тебе надо? Code-style разрабатываешь?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, igna, Вы писали:
I>Тогда согласно твоему правилу константы нужно инициализировать используя скобки:
Нет, не надо. семантика значения не зависит от константности. Значение -- это число, строка, прямоугольник. Не значение -- это открытый файл, например.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, igna, Вы писали:
I>Здравствуйте, wander, Вы писали:
W>>ЗЫ. А можно ответный вопрос. Это что, у тебя там спор какой-то с кем-то по этому поводу?
I>Нет.
I>А можно все же ответ на мой вопрос? В необобщенном случае ты действительно напишешь int i = int();, вместо int i = 0;? Если нет, к чему был твой первый ответ?
Дык я вроде бы ответил уже. Вообще первый раз была шутка, думал поймешь. В необобщенном случае я так не напишу.
Здравствуйте, Erop, Вы писали:
E>Нет, не надо. семантика значения не зависит от константности.
Понимаю, просто обращаю внимание на недостаток твоего определения. Оно требует присваиваемости, а это не позволяет считать, что int const имеет семантику значения. Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?
Здравствуйте, igna, Вы писали:
I> Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?
Да. Так же, как и копируемый...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, igna, Вы писали:
I>Здравствуйте, fay, Вы писали:
fay>>Предпочитаю первый... Такая ошибка может обернуть веселыми минутами...
I>
fay>>int i(10);
fay>>int i[10];
I>
I>Честно говоря не вижу проблемы. Наверное можно сконструировать какой-нибудь (скорее искуственный) пример, но в большинстве случаев компилятор выдаст сообщение об ошибке когда попытаешься использовать целое вместо массива целых или наоборот.
При портировании с С — легко:
void test ( void *a );
int i1(10);
int i2[10];
test(&i1);
test(&i2);
I>> Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?
E>Да. Так же, как и копируемый...
Прошу прощения, кратких ответов на отрицательные вопросы не понимаю. Ответ "нет" можно понимать как угодно, ответ "да" похоже и вовсе не имеет смысла. Поэтому переформулирую и прошу ответить еще раз:
"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?
Здравствуйте, igna, Вы писали:
I>"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?
да
И "копируемый" тоже обозначает аналогичное свойство из стандарта.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
I>>"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?
E>да
const type не является Assignable, соответственно не имеет семантики значения. Читаем твое правило:
E>Я придерживаюсь простого формального правила: объекты с семантикой значения инициализирую через =, а объекты такой семантики лишённые через ()...
и инициализируем в соответствии с ним целую константу:
Здравствуйте, igna, Вы писали:
I>const type не является Assignable, соответственно не имеет семантики значения. Читаем твое правило:
А что, std::vector<const int> уже запрещён?..
I>и инициализируем в соответствии с ним целую константу: I>
I> int const n(123);
I>
Иди лесом. Я тебе уже писал, что const переменной на свойство типа иметь семантику значения не влияет. Просто это константное значение такого типа. Если тебе охота поупорожняться в цереброфилии, то общайся сам с собой...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, igna, Вы писали:
I>Здравствуйте, nik0lay, Вы писали:
N>>int i = 0; N>>экономя микросекунды на понимание кода читателями моей программы
I>Так. А std::complex, std::auto_ptr, boost::shared_ptr, std::string?
Ну тут понятно
std::complex<double> clVar( 3.0, -1.0 );
std::auto_ptr<MyStock> pStock( new MyStock( 12, 15, L"Выдача" ) );
boost::shared_array<wchar_t>( new wchar_t[MaxFileLen] );
А вот с std::wstring, честно, как попало. Даже не задумывался об этом.
Специально глянул в исходники — как пальцы стали, так и написал
Не Eropy
E>const переменной на свойство типа иметь семантику значения не влияет. Просто это константное значение такого типа.
Демагогия.
const в объявлении относится к типу, это часть типа, то есть в объявлении int const n, n это переменная типа int const, а не "константное значение" типа int, как пишет Erop.
Во-первых, как попало IMHO — плохо.
Во-вторых, никакой как-попалы я у тебя не заметил, инициализация strSQL использует скобки, strOwner не инициализируется.