Re[9]: Инициализация std::complex
От: Erop Россия  
Дата: 05.10.09 08:29
Оценка:
Здравствуйте, igna, Вы писали:

I>Согласно этому правилу std:auto_ptr и boost::shared_ptr нужно инициализировать по разному. Я правильно понял?


Да, и это хорошо, так как подчёркивает отсутствие семантики значения у std:auto_ptr...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Инициализация int
От: igna Россия  
Дата: 05.10.09 08:47
Оценка:
Здравствуйте, fay, Вы писали:

fay>Предпочитаю первый... Такая ошибка может обернуть веселыми минутами...


fay>int i(10);
fay>int i[10];


Честно говоря не вижу проблемы. Наверное можно сконструировать какой-нибудь (скорее искуственный) пример, но в большинстве случаев компилятор выдаст сообщение об ошибке когда попытаешься использовать целое вместо массива целых или наоборот.
Re[10]: Инициализация std::complex
От: igna Россия  
Дата: 05.10.09 08:54
Оценка:
Здравствуйте, Erop, Вы писали:

E>Да, и это хорошо, так как подчёркивает отсутствие семантики значения у std:auto_ptr...


Угу, а формальное определение семантики значения у тебя есть?
Re[11]: Инициализация std::complex
От: Erop Россия  
Дата: 05.10.09 09:35
Оценка:
Здравствуйте, igna, Вы писали:

I>Угу, а формальное определение семантики значения у тебя есть?

Копируемый, присваеваемый объект, который представляет сам себя и все копии которого эквивалентны.

А зачем это всё тебе надо? Code-style разрабатываешь?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Инициализация std::complex
От: igna Россия  
Дата: 05.10.09 09:42
Оценка:
Здравствуйте, Erop, Вы писали:

E>Копируемый, присваеваемый объект, который представляет сам себя и все копии которого эквивалентны.


Тогда согласно твоему правилу константы нужно инициализировать используя скобки:

    int const n(123);


E>А зачем это всё тебе надо? Code-style разрабатываешь?


В некотором смысле. Для себя.
Re[13]: Инициализация std::complex
От: Erop Россия  
Дата: 05.10.09 10:59
Оценка:
Здравствуйте, igna, Вы писали:

I>Тогда согласно твоему правилу константы нужно инициализировать используя скобки:

Нет, не надо. семантика значения не зависит от константности. Значение -- это число, строка, прямоугольник. Не значение -- это открытый файл, например.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Инициализация int
От: wander  
Дата: 05.10.09 12:02
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, wander, Вы писали:


W>>ЗЫ. А можно ответный вопрос. Это что, у тебя там спор какой-то с кем-то по этому поводу?


I>Нет.


I>А можно все же ответ на мой вопрос? В необобщенном случае ты действительно напишешь int i = int();, вместо int i = 0;? Если нет, к чему был твой первый ответ?


Дык я вроде бы ответил уже. Вообще первый раз была шутка, думал поймешь. В необобщенном случае я так не напишу.
Re[14]: Инициализация std::complex
От: igna Россия  
Дата: 05.10.09 13:07
Оценка:
Здравствуйте, Erop, Вы писали:

E>Нет, не надо. семантика значения не зависит от константности.


Понимаю, просто обращаю внимание на недостаток твоего определения. Оно требует присваиваемости, а это не позволяет считать, что int const имеет семантику значения. Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?
Re[8]: Инициализация int
От: igna Россия  
Дата: 05.10.09 13:10
Оценка:
Здравствуйте, wander, Вы писали:

W>Дык я вроде бы ответил уже. Вообще первый раз была шутка, думал поймешь.


Спасибо, теперь понятно. Ха-ха-ха. А я уж подумал, может ты выпендренулся.
Re[15]: Инициализация std::complex
От: Erop Россия  
Дата: 05.10.09 18:16
Оценка:
Здравствуйте, igna, Вы писали:

I> Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?


Да. Так же, как и копируемый...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Инициализация int
От: fay Украина www.bekhter.net
Дата: 05.10.09 19:15
Оценка:
Здравствуйте, 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);


W4 на MSVC молчит
Best regards,
Oleg Bekhter
Software Developer
Re[4]: Инициализация int
От: nik0lay Россия  
Дата: 05.10.09 21:36
Оценка: +1
int i = 0;
экономя микросекунды на понимание кода читателями моей программы
Все имена функций и классов изменены, любое совпадение является случайным.
Re[5]: Инициализация int
От: igna Россия  
Дата: 06.10.09 06:16
Оценка:
Здравствуйте, nik0lay, Вы писали:

N>int i = 0;

N>экономя микросекунды на понимание кода читателями моей программы

Так. А std::complex, std::auto_ptr, boost::shared_ptr, std::string?
Re[16]: Инициализация std::complex
От: igna Россия  
Дата: 06.10.09 08:25
Оценка:
Здравствуйте, Erop, Вы писали:


I>> Или "присваемый" означает у тебя не то же самое что "Assingable" в стандарте?


E>Да. Так же, как и копируемый...


Прошу прощения, кратких ответов на отрицательные вопросы не понимаю. Ответ "нет" можно понимать как угодно, ответ "да" похоже и вовсе не имеет смысла. Поэтому переформулирую и прошу ответить еще раз:

"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?
Re[17]: Инициализация std::complex
От: Erop Россия  
Дата: 06.10.09 14:37
Оценка:
Здравствуйте, igna, Вы писали:

I>"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?


да
И "копируемый" тоже обозначает аналогичное свойство из стандарта.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[18]: Инициализация std::complex
От: igna Россия  
Дата: 06.10.09 15:07
Оценка:
Здравствуйте, Erop, Вы писали:

I>>"Присваемый" означает у тебя то же самое что "Assignable" в стандарте?


E>да


const type не является Assignable, соответственно не имеет семантики значения. Читаем твое правило:

E>Я придерживаюсь простого формального правила: объекты с семантикой значения инициализирую через =, а объекты такой семантики лишённые через ()...


и инициализируем в соответствии с ним целую константу:

   int const n(123);
Re[19]: Надоел.
От: Erop Россия  
Дата: 06.10.09 16:10
Оценка: :)
Здравствуйте, igna, Вы писали:

I>const type не является Assignable, соответственно не имеет семантики значения. Читаем твое правило:

А что, std::vector<const int> уже запрещён?..

I>и инициализируем в соответствии с ним целую константу:

I>
I>   int const n(123);
I>


Иди лесом. Я тебе уже писал, что const переменной на свойство типа иметь семантику значения не влияет. Просто это константное значение такого типа. Если тебе охота поупорожняться в цереброфилии, то общайся сам с собой...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Инициализация int
От: fay Украина www.bekhter.net
Дата: 06.10.09 18:41
Оценка:
Здравствуйте, 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, честно, как попало. Даже не задумывался об этом.
Специально глянул в исходники — как пальцы стали, так и написал
std::wstring strSQL( L"select IDW,WNAME "
                     L"from WAREHOUSE "
                     L"where OWNER=[:owner]" );
std::wstring strOwner;
if( bla...bla )
   strOwner = L"admin";
else
   strOwner = L"user";
Best regards,
Oleg Bekhter
Software Developer
Re[20]: Не Eropy
От: igna Россия  
Дата: 07.10.09 05:33
Оценка:
Не Eropy

E>const переменной на свойство типа иметь семантику значения не влияет. Просто это константное значение такого типа.


Демагогия.

const в объявлении относится к типу, это часть типа, то есть в объявлении int const n, n это переменная типа int const, а не "константное значение" типа int, как пишет Erop.
Re[7]: Инициализация int
От: igna Россия  
Дата: 07.10.09 05:42
Оценка:
Здравствуйте, fay, Вы писали:

fay>std::complex<double> clVar( 3.0, -1.0 );


А если выбор есть?:

    std::complex<double> x(y);

    std::complex<double> x = y;


fay>А вот с std::wstring, честно, как попало. Даже не задумывался об этом.

fay>Специально глянул в исходники — как пальцы стали, так и написал
fay>std::wstring strSQL( L"select IDW,WNAME "
fay>                     L"from WAREHOUSE "
fay>                     L"where OWNER=[:owner]" );
fay>std::wstring strOwner;
fay>if( bla...bla )
fay>   strOwner = L"admin";
fay>else
fay>   strOwner = L"user";


Во-первых, как попало IMHO — плохо.
Во-вторых, никакой как-попалы я у тебя не заметил, инициализация strSQL использует скобки, strOwner не инициализируется.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.