Шаблонная переменная C ++ и расширение пакета параметров - PullRequest
0 голосов
/ 16 февраля 2019

В варианте источника libstdc ++ он определяет следующую переменную шаблона (взятую из структуры _Traits),

template<typename... _Types>
  static constexpr bool _S_copy_ctor = 
    (is_copy_constructible_v<_Types> && ...);

Что здесь делает '&&'?

Я пыталсявыньте '&&', которое не удалось скомпилировать, так в чем же разница между ними?

  static constexpr bool _S_copy_ctor = (is_copy_constructible_v<_Types> && ...);
  static constexpr bool _S_copy_ctor = (is_copy_constructible_v<_Types>    ...);

1 Ответ

0 голосов
/ 16 февраля 2019

В этом контексте && - это простой логический оператор AND , называемый оператор сгиба .

Он используется для разворачиваниявыражение на основе typename... _Types.Пример:

пусть _Types будет выведено в int, double, float, тогда выражение:

(is_copy_constructible_v<_Types> && ...)

будет расширено ( развернуто ) до:

(is_copy_constructible_v<int> &&
 is_copy_constructible_v<double> && 
 is_copy_constructible_v<float>)

Вы не можете просто стереть &&.У него есть вариант использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...