2
ответа

Почему ADL не находит шаблоны функций?

Какая часть спецификации C++ ограничивает зависимый поиск аргумента в нахождении шаблонов функций в наборе связанных пространств имен? Другими словами, почему делает последнюю возможность в основном ниже сбоя к...
вопрос задан: 28 July 2018 13:20
1
ответ

Основанный на диапазоне для дублирования определения оператора

При рассмотрении n3092, в §6.5.4 мы находим эквивалентность для основанного на диапазоне для цикла. Это затем продолжает, что __ начинают и __, конец равен. Это дифференцируется между массивами и другими типами, и я нахожу...
вопрос задан: 29 October 2011 17:38
0
ответов

что означает `using std :: swap` внутри тела реализации метода класса?

Я пытался изучить и принять идиому копирования-обмена после этого подробного объяснения этот вопрос: идиома Copy-Swap. Но я нашел код, которого никогда не видел: using std :: swap; // разрешить ADL в ...
вопрос задан: 30 May 2019 23:19
0
ответов

Что такое «поиск, зависимый от аргументов» (он же ADL или «поиск по Кенигу»)?

Каковы некоторые хорошие объяснения того, что такое поиск, зависимый от аргументов? Многие также называют это Koenig Lookup. Предпочтительно я хотел бы знать: почему это хорошо? Почему это плохо? Как ...
вопрос задан: 20 July 2018 18:02
0
ответов

Получение элемента из кортежа [дубликат]

Возможный дубликат: почему не найдет шаблоны функций? Звонирование Get, похоже, не вызывает информирование, зависимый от аргументов: Auto t = std :: make_tuple (false, false, true); bool a = get <0> ...
вопрос задан: 23 May 2017 11:59
0
ответов

ADL с typedefs из другого пространства имен

У меня что-то вроде этого: #include пространство имен N {typedef std :: pair MyPair; std :: ostream & operator << (std :: ostream & o, MyPair const & ...
вопрос задан: 20 August 2015 21:29
0
ответов

Гарантируют ли настраиваемые итераторы контейнеров, что ADL учитывает пространство имен std?

Я не собираюсь использовать это в реальном коде. Обещаю. Гарантирует ли стандарт, что пространство имен std будет найдено, когда аргумент функции имеет тип container :: iterator и container :: ...
вопрос задан: 2 December 2014 16:06
0
ответов

GCC, Clang и IBM не согласны с тем, как выполнить поиск имени зависимого от параметра шаблона. Какой из них прав?

Рассмотрим этот пример, я нашел на веб-сайте IBM: #include используя пространство имен STD; void f (double) {cout << "Функция f (double)" << endl; } Шаблон Void G (T ...
вопрос задан: 27 November 2014 22:20
0
ответов

Различное поведение при поиске полного и неквалифицированного имени для шаблона

Как должен себя вести этот код? Он вызывает общую функцию, игнорируя мою перегрузку, если я использую квалифицированное имя в функции call_read (); и сначала вызывается перегрузка, а затем общая версия, если я использую неквалифицированный ...
вопрос задан: 10 November 2014 02:39
0
ответов

Как мне написать ADL-совместимый конечный возвращаемый тип или спецификация noexcept?

Представьте, что я пишу какой-то шаблон контейнера или что-то в этом роде. И пришло время специализировать для этого std :: swap. Как порядочный гражданин, я включу ADL, сделав что-то вроде этого: template
вопрос задан: 2 November 2013 17:45
0
ответов

Неоднозначный вызов шаблонной функции из-за ADL

Меня несколько раз укусила эта проблема, и мои коллеги тоже. При компиляции #include #include <повышение / алгоритм / строка / find.hpp> #include
вопрос задан: 6 August 2013 19:23
0
ответов

Можно ли взять адрес функции ADL?

Можно ли взять адрес функции, которая будет найдена через ADL? Например: шаблон < класс T > void (* get_swap ()) (T & amp ;, T & amp;) {return & amp; _________; // как ...
вопрос задан: 6 August 2013 17:39
0
ответов

Почему поиск, зависящий от аргумента, не работает с шаблоном функции dynamic_pointer_cast

Рассмотрим следующую программу на C++: #include struct A {}; структура Б: А {}; основной () { auto x = std::make_shared(); если (авто p = dynamic_pointer_cast(x)); ...
вопрос задан: 22 February 2013 07:02
0
ответов

Аргумент -зависимый поиск по базе класса шаблона

У меня есть класс шаблона NB ::B, полученный из не--класса шаблона NA ::A в пространстве имен. act — это функция шаблона, вызывающая функцию add _ref для экземпляра своего аргумента шаблона....
вопрос задан: 24 July 2012 16:29
0
ответов

3.4.2 Поиск имени в зависимости от аргумента из n3290 Draft

Пункт из проекта ISO n3290, раздел 3.4 .2 абзац 1: Когда постфиксное-выражение в вызове функции является неквалифицированным-идентификатором, другие пространства имен, не учитываемые во время обычного неквалифицированного поиска, могут ...
вопрос задан: 18 July 2012 06:04
0
ответов

Алгоритм нахождения наименьшего количества прямоугольников для покрытия набора прямоугольников без перекрытия

У меня есть набор прямоугольников, и я хотел бы «уменьшить» набор, чтобы у меня было наименьшее количество прямоугольников для описания той же области, что и исходный набор. Если возможно, я хотел бы, чтобы это было быстро, ...
вопрос задан: 10 March 2012 04:00
0
ответов

Как сделать шаблон функции наименее приоритетным во время ADL?

У меня проблема, когда я хотел бы предоставить общую версию функции foo, которая может применяться только тогда, когда нет абсолютно никакого другого соответствия для вызова. Как я могу изменить следующий код ...
вопрос задан: 30 September 2011 18:37
0
ответов

Где я должен определить оператор >> для моей специализации std :: pair?

Рассмотрим следующую программу: #include #include #include <вектор> #include <служебная программа> используя пространство имен std; // только для удобства, только для иллюстрации ...
вопрос задан: 30 July 2011 18:14
0
ответов

Начиная в общем, плюс decltype с учетом локального объявления-использования

C ++ 0x ' В цикле ranged-for есть специальное исключение для обработки массивов (FDIS §6.5.4), и есть две функции, std :: begin и end, которые перегружены для обработки массивов или для выбора методов начала / конца. ...
вопрос задан: 30 May 2011 19:00
0
ответов

C ++ ADL во вложенных пространствах имен с функцией шаблона

I есть вопрос относительно стандартного разрешения ADL в C ++. Вот пример кода, объясняющий мой запрос: #include // Механизм: пространство имен A {template :: ...
вопрос задан: 12 May 2011 11:19
0
ответов

На основе диапазона для циклов и ADL

В стандартном рабочем проекте C ++ 0x указано (раздел 6.5.4) следующее о неявных вызовах begin () и end () в цикле for на основе диапазона: "начало" и "конец" ищутся с аргументом -...
вопрос задан: 5 March 2011 01:30
0
ответов

Обоснование поиска по Кенигу

В чем смысл поиска по Кенигу? Нельзя не думать об этом как о чем-то, что делает ваш код более трудным для чтения и более нестабильным. Разве они не могли определить поиск по Кенигу так, чтобы он только работал ...
вопрос задан: 4 February 2011 00:55
0
ответов

Функции с аргументами класса утекают из пространства имен?

У меня есть небольшой фрагмент кода для вашего рассмотрения, который меня весьма озадачивает много. Странно то, что он компилируется и на Sun Studio, и на GCC, хотя я думаю, что этого не должно быть. Подумайте ...
вопрос задан: 4 February 2011 00:54
0
ответов

Правила поиска операторов C ++ / поиск по Кенигу

При написании набора тестов мне нужно было предоставить реализацию оператора << (std :: ostream & ... для использования модульного теста Boost Это сработало: namespace theseus {namespace core {std :: ...
вопрос задан: 5 January 2011 12:39
0
ответов

Почему был изобретен поиск, зависимый от аргументов?

Почему был изобретен поиск, зависимый от аргументов (ADL)? Просто чтобы мы могли написать cout << материал вместо std :: operator << (cout, stuff)? Если это так, то почему ADL не был ограничен операторами ...
вопрос задан: 25 November 2010 12:03
0
ответов

ADL и инъекция друга

Рассмотрим этот код: template структура X {друг void f (X *) {} }; int main () {f ((X <0> *) 0); // Ошибка? } Компиляторы, похоже, сильно не согласны. (MSVC08 / 10 говорит нет, GCC <4.5 говорит ...
вопрос задан: 22 November 2010 00:39
0
ответов

Каковы ловушки ADL?

Некоторое время назад я прочитал статью, которая объяснила несколько ловушек зависимого поиска аргумента, но я не могу больше находить его. Именно о получении доступа к вещам у Вас не должно быть доступа к или...
вопрос задан: 21 November 2010 14:39