Вход на сайт
базовая литература по программированию
NEW 04.09.06 01:01
Может быть чтобы ответить на такой вопрос:
И убедиться в том, что его можно откомпилировать только одним способом.
в ответ scorpi_ 04.09.06 00:42
В ответ на:
Во-вторых, при ч╦м тут вс╦ это?
Во-вторых, при ч╦м тут вс╦ это?
Может быть чтобы ответить на такой вопрос:
В ответ на:
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int.
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int.
И убедиться в том, что его можно откомпилировать только одним способом.
NEW 04.09.06 01:07
Прошу прощения за неясности. Конечно же 5.16 имеет отношение не к определению типа (left < right), а к определению типа (left < right ? right : left). Значение именно этого выражения возвращает return.
в ответ voxel3d 04.09.06 00:57
В ответ на:
Вс╦ остальное описание в 5.16 - о правилах выведения типа конечного результата и к процессу вычисления первого логического выражения отношения не имеет.
Вс╦ остальное описание в 5.16 - о правилах выведения типа конечного результата и к процессу вычисления первого логического выражения отношения не имеет.
Прошу прощения за неясности. Конечно же 5.16 имеет отношение не к определению типа (left < right), а к определению типа (left < right ? right : left). Значение именно этого выражения возвращает return.
04.09.06 01:15
в ответ igna 04.09.06 01:01
Мой вопрос относился ко всей серии Ваших постингов, которые к теме вообще непонятно каким образом относятся.
Во-вторых если учесть, что Вы С++ всё ж немного знаете, я расцениваю Ваши постинги как чистейший воды флейм, непонятно для чего затеянный, и непонятно что Вы хотели доказать...
В-третьих у нас всё же template arguments, а не просто conditional operator, поэтому весь Ваш флейм мимо кассы.
Во-вторых если учесть, что Вы С++ всё ж немного знаете, я расцениваю Ваши постинги как чистейший воды флейм, непонятно для чего затеянный, и непонятно что Вы хотели доказать...
В-третьих у нас всё же template arguments, а не просто conditional operator, поэтому весь Ваш флейм мимо кассы.
NEW 04.09.06 01:20
Вот этот вопрос?:
И какой же именно код в каком данном случае можно откомпилировать двумя способами?
в ответ scorpi_ 04.09.06 01:15
В ответ на:
Мой вопрос относился ко всей серии Ваших постингов
Мой вопрос относился ко всей серии Ваших постингов
Вот этот вопрос?:
В ответ на:
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int.
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int.
И какой же именно код в каком данном случае можно откомпилировать двумя способами?
NEW 04.09.06 01:23
> Это 5.9.2 - Relational operators The usual arithmetic conversions are performed on operands of arithmetic or enumeration type. Так что всё равно всё приводится к double.
Завтра на работе прочитаю, сейчас не буду стандарт выкачивать, спать пора. Хочу только сказать, что нифига к double не приводится у меня на gcc
, а всё обрезается до int, если при вызове слева стоит int, a справа double.
p.s. В варианте с двумя шаблонными параметрами, который предложил igna.
Завтра на работе прочитаю, сейчас не буду стандарт выкачивать, спать пора. Хочу только сказать, что нифига к double не приводится у меня на gcc

p.s. В варианте с двумя шаблонными параметрами, который предложил igna.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 04.09.06 01:38
Похоже, что стандартный C от C++ в этом месте не отличается:
6.5.8 Relational operators
. . .
3 If both of the operands have arithmetic type, the usual arithmetic conversions are performed.
А точно, (1 < 1.1) gcc вычисляет как 0 или false?
в ответ voxel3d 04.09.06 01:23
В ответ на:
Хочу только сказать, что нифига к double не приводится у меня на gcc , а вс╦ обрезается до int, если при вызове слева стоит int, a справа double.
Хочу только сказать, что нифига к double не приводится у меня на gcc , а вс╦ обрезается до int, если при вызове слева стоит int, a справа double.
Похоже, что стандартный C от C++ в этом месте не отличается:
6.5.8 Relational operators
. . .
3 If both of the operands have arithmetic type, the usual arithmetic conversions are performed.
А точно, (1 < 1.1) gcc вычисляет как 0 или false?
NEW 04.09.06 01:39
в ответ scorpi_ 04.09.06 01:31
Хм, я не знаю. Тут у тебя, похоже к double приводится левый операнд. У меня ругается: Warning: converting to `const int' from `double` на строке сравнения в шаблоне, т.е. там он приводит double к int.
Ладно, всем спокойной ночи.
Ладно, всем спокойной ночи.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 04.09.06 02:10
Какой код, max(1, 1.1)? Конечно.
Но вот ты задал вопрос
в ответ на мое
в ответ scorpi_ 04.09.06 01:28
В ответ на:
Короче твой код ill-formed, ибо компилятор не знает поставить ли ему T = int или T = double.
Короче твой код ill-formed, ибо компилятор не знает поставить ли ему T = int или T = double.
Какой код, max(1, 1.1)? Конечно.
Но вот ты задал вопрос
В ответ на:
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int. Вам какой из? Откуда должен компилятор знать, какой вариант Вас интересует?
Видите ли, этот код в данном случае можно откомпилировать двумя способами - либо сравнивая double c double, либо int c int. Вам какой из? Откуда должен компилятор знать, какой вариант Вас интересует?
в ответ на мое
В ответ на:
Будет ли считаться читающим мысли компилятор способный откомпилировать следующее:
Будет ли считаться читающим мысли компилятор способный откомпилировать следующее:
template<class T1, class T2> inline
const auto& max( const T1& left, const T2& right )
{
return left < right ? right : left;
}