Я повторно публикую comp.std.c++ Обсуждение Usenet здесь, потому что эта группа стала очень ненадежной. Последние несколько постов, которые я туда отправил, ушли в пустоту, и активность почти прекратилась. Сомневаюсь, что меня забанили и/или все остальные просто потеряли интерес. Надеюсь все желающие найдут это обсуждение, и будет вообще миграция. Может тогда назначат нового модератора.
Привет!
С моей текущей интерпретацией проекта N3126 w.r.t. условный оператор и значения x, я ожидаю, что будут выполнены следующие утверждения:
int i = 0;
int& j = true? i : i;
int&& k = true? std::move(i) : std::move(i); // #2
assert(&i == &j); // Holds since C++98
assert(&i == &k); // Should this hold as well?
5.16/4 говорит:
Если второй и третий операнды [условного оператора] являются glvalues одной и той же категории значений и имеют один и тот же тип, результат имеет тот же тип и категорию значений [...]
Тем не менее, это не говорит ясно, что результирующее glvalue относится к одному из объектов, на которые ссылаются операнды glvalue, или это подразумевается, потому что в противном случае он вернул бы prvalue? При использовании GCC 4.5.1 в режиме C++0x второе утверждение не выполняется. Ссылка k, по-видимому, относится к какому-то временному объекту. Может ли кто-нибудь уточнить, разрешено ли компилятору создавать такое временное в случае, если оба операнда вокруг двоеточия являются значениями x одного и того же типа?
В настоящее время я предполагаю, что GCC глючит и/или не обновляется в отношении значений xvalue.
Следующий вопрос: было бы неплохо иметь возможность определять категорию значения выражения? Если мы проигнорируем условный оператор, мы сможем определить категорию значения выражения с decltype. Но что такое
bool xvalue = std::is_rvalue_reference<
decltype( true ? std::move(i) : std::move(i) ) >::value;
должен уступать? При использовании GCC 4.5.1 переменная xvalue инициализируется значением false. Соответствует ли это текущему стандартному проекту?
Тиа, Себастьян
comp.lang.c++
не модерируется, поэтому он более активен, потому что модератор не спит за рулем.comp.std.c++
имеет семь сообщений за октябрь против десятков за сентябрь, потому что модератор почти ушел. Я не знаю, почему и как ему удается пропускать такую маленькую, но ненулевую струйку. - person Potatoswatter   schedule 12.10.2010comp.std.c++
является полуофициальным каналом для отправки отчетов о дефектах, я создал тегc++-defect
, чтобы соответствовать такого рода вещам. Может быть, можно организовать процесс направления вопросов комитету после их проверки. - person Potatoswatter   schedule 12.10.2010std::tuple_element
иtuple_size
наbitset
. Так что я не слишком беспокоюсь. Но отправка подробного двухстраничного ответа наcomp.std.c++
очень похожа на то, чтобы просто заполнить чей-то спам-фильтр. - person Potatoswatter   schedule 12.10.2010