2010-02-22 6 views
3

От Boost::Thread:Одд C++ член Объявление функции Синтаксис: && отборочные

template <typename R> 
class shared_future 
{ 
... 
// move support 
shared_future(shared_future && other); 
shared_future(unique_future<R> && other); 
shared_future& operator=(shared_future && other); 
shared_future& operator=(unique_future<R> && other); 
... 
} 

Что на земле являются те двойные амперсанды? Я перешел «BS The C++ Langauge 3d edition» и не смог найти никакого объяснения.

+1

Я знаю, что вы не смогли найти его, выполнив поиск SO, но все же дубликат: http://stackoverflow.com/questions/844241/why-are-c0x-rvalue-reference-not-the-default (I я дам вам +1 за усилия и ясность: P) – 2010-02-22 12:04:20

+0

Благодарим вас за надежду, что настройка названия позволит кому-то еще найти решение. –

+0

Проблема заключается в игнорировании символов при поиске, поэтому включение «&&» не помогает. Вам нужно будет узнать название «rvalue reference», чтобы найти SO-вопросы об этом. – 2010-02-22 12:08:57

ответ

6

Это добавление C++ 0x для ссылок rvalue.

См. http://www.artima.com/cppsource/rvalue.html.

+0

Это немного странно для библиотеки в boost, чтобы начать использовать C++ 0x до ее выпуска. –

+5

@ Хассан: Нет, это не так. Гораздо лучше экспериментировать с функциями до их стандартизации (одной из основных целей стандарта является «стандартизация существующей практики»), и такое экспериментирование является основной целью повышения. Реализация фактического повышения использует препроцессор для выборочного использования использования rvalue refs. – 2010-02-22 12:06:46

Смежные вопросы