лязг 3,6 раза выражение влево / вправо
251 просмотра
1 ответ
Я пробую выражение сгиба с помощью clang 3.6 '--std = c ++ 1z', но что-то мне не совсем понятно. Функция, которую я тестирую:
auto minus = [](auto... args) { return (args - ...); };
...
std::cout << minus(10, 3, 2) << std::endl;
в соответствии с n4191 , я ожидаю, что он расширяется как левый сгиб до
(10 - 3) - 2
который дает результат 5, однако, результат 9, который, кажется, разложение вправо, т.е.
10 - (3 - 2)
Я что-то упускаю или неправильно понимаю n4191? Спасибо
Автор: Ralph Zhang Источник Размещён: 12.11.2019 09:40Ответы (1)
6 плюса
n4191 был пересмотрен n4295 . В соответствии с этим, выражение формы (e op ...)
является одинарным правым сгибом , и оно расширяется как:, E1 op (... op (EN-1 op EN))
т.е. как правое сгибание.
Похоже, это противоположно тому, что было указано в n4191 относительно направления сгиба. Clang 3.6 реализует предложение n4295, как показано здесь .
... - args
будет унарный левый сгиб и расширится в нужном вам направлении.
Вопросы из категории :
- c++ What are the barriers to understanding pointers and what can be done to overcome them?
- c++ Какой самый простой способ для анализа файла INI в C ++?
- c++ Когда вы должны использовать «друг» в C ++?
- c++ Как вы очищаете переменную stringstream?
- c++ В C ++ конструктор и деструктор могут быть встроенными функциями?
- clang Использование Clang Static Analyzer из Xcode
- clang LLVM C ++ IDE для Windows
- clang Любой учебник для встраивания Clang в качестве интерпретатора сценариев в код C ++?
- clang Переключение между GCC и Clang / LLVM с использованием CMake
- clang Clang ++ выполняет потокобезопасную инициализацию локальных статических переменных?
- clang++ Using clang++, -fvisibility=hidden, and typeinfo, and type-erasure
- clang++ Демпинг памяти с лязгом
- clang++ Проблема с классом символов C ++ Regex POSIX
- clang++ clang: нет определений виртуального метода вне сети (чистый абстрактный класс C ++)
- c++17 Что такое агрегаты и POD и как / почему они особенные?
- c++17 лязг 3,6 раза выражение влево / вправо
- c++17 перечисление в строку в современном C ++ 11 / C ++ 14 / C ++ 17 и будущем C ++ 20
- c++17 Использование Observer_ptr
- c++17 Получить версию Apple Clang и соответствующую версию восходящего LLVM