Я переписываю comp.std.c++ Usenet discussion здесь, потому что эта группа стала очень ненадежной. Последние несколько сообщений, которые я там отправил, попали в пустоту, и деятельность почти прекратилась. Я сомневаюсь, что меня запретили, и/или все остальные просто потеряли интерес. Надеемся, что все заинтересованные люди найдут эту дискуссию, и будет общая миграция. Может быть, тогда они назначат нового модератора.C++ 0x: условный оператор, xvalues и decltype
Hello!
С моей текущей интерпретацией проекта N3126 w.r.t. Условный оператора и xvalues, я ожидаю, что следующие утверждения провести:
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 неисправен и/или не обновлен с уважением до значений xvalues.
Следующий вопрос: не было бы хорошо, если бы можно было определить категорию значений выражения ? Если мы проигнорируем условный оператор , мы можем определить категорию значений выражения с помощью decltype. Но что такое
bool xvalue = std::is_rvalue_reference<
decltype(true ? std::move(i) : std::move(i)) >::value;
Предполагаемый выход? Используя GCC 4.5.1, переменная xvalue инициализируется с ложным. Соответствует ли это действующему стандарту?
ТИА, Sebastian
Я думаю, вы имеете в виду [comp.std.C++], как следует из вашей ссылки. Да, у него есть некоторое время задержки, но я думаю, что вы, возможно, только что столкнулись с недавним отключением Google. Вы отправляли сообщения через группы Google? –
@Alf: Я публикую группы Google, но не повлияет ли это на все группы? Практически нет активности на comp.std.C++ с сентября, а не для немодерированных групп. – Potatoswatter
Отсюда c.l.C++ имеет 30 сообщений для моего локального «today», c.s.C++ имеет два (один из них из «SG», который вам кажется) и еще пять сообщений для ранее других людей в этом месяце. – sbi