Вопросы по теме 'argument-dependent-lookup'

3.4.2 Поиск имени в зависимости от аргумента из n3290 Draft
Пункт из проекта ISO n3290, раздел 3.4.2, пункт 1: Когда постфиксное-выражение в вызове функции является неполным идентификатором , можно искать другие пространства имен, не учитываемые при обычном неквалифицированном поиске, и в этих...
393 просмотров

Где я должен определить оператор ›› для моей специализации std :: pair?
Рассмотрим следующую программу: #include <iostream> #include <iterator> #include <vector> #include <utility> using namespace std; //just for convenience, illustration only typedef pair<int, int> point; //this is my...
585 просмотров

Поиск в зависимости от аргумента, когда он выполняется, что ищется и как вы можете принудительно (или предотвратить) его?
У меня возникли проблемы с пониманием правил поиска, зависящего от аргумента (Koenig). Рассмотрим код ниже: #include <iostream> using namespace std; namespace adl { struct Test { }; void foo1(Test const &) { cout <<...
391 просмотров
schedule 15.02.2024

Работает ли ADL с именованными лямбда-выражениями?
Скажем, у меня есть класс и именованная лямбда в одном пространстве имен. namespace bla { class X { /* ... */ }; static auto lambda = []( X param ){ /* ... */ }; } Эта лямбда почти эквивалентна встроенной функции. Но могу ли я...
193 просмотров

Почему компилятор не может найти эту перегрузку оператора?
Я пытаюсь написать перегрузки operator<< для конкретных экземпляров контейнеров стандартной библиотеки, которые будут храниться в boost::variant . Вот небольшой пример, иллюстрирующий проблему: #include <iostream> #include...
1808 просмотров

Почему здесь не работает поиск Кенинга?
Поиск, зависящий от аргумента, говорит: Для аргументов типа класса (включая объединение) набор состоит из... а) самого класса б)... Тогда почему printX не может найти X? #include<iostream> using namespace std; class A {...
73 просмотров
schedule 21.03.2023

зачем перемещать swap_impl в boost::swap в отдельное пространство имен?
Я изучаю реализацию boost:: swap: namespace boost_swap_impl { template<class T> BOOST_GPU_ENABLED void swap_impl(T& left, T& right) { using namespace std;//use std::swap if argument dependent lookup fails...
152 просмотров
schedule 09.07.2023

Почему/когда мы должны использовать std::swap; swap(a, b) на std::iter_swap(&a, &b)?
Почему/когда мы должны предпочесть using std::swap; swap(a, b); std::iter_swap(&a, &b) ?
254 просмотров

C++ с использованием поиска, зависящего от объявления и аргумента
Является ли приведенный ниже код действительным для С++ 98 или для него требуется более новая версия стандарта С++? namespace basic { void f(int) {} } namespace lib { template<class T1, class T2> void g(T1 x1, T2 x2) { using...
171 просмотров

C++ - Как включить ADL с advance() на итераторах в контейнере данных с пользовательским шаблоном?
Вот контейнер: namespace container_namespace { template <class element_type, class element_allocator_type = std::allocator<element_type> > class container { // stuff class iterator { // stuff }; }; } Где...
276 просмотров

Определение функции в пространстве имен, отличном от ADL, локальном или глобальном пространстве имен
См. Код ниже: #include <iostream> /// Definition of void perform(a_lib::a_class&). Where should I put this definition? /// See the comments below for where I've tried placing it. // void perform(a_lib::a_class&) { // std::cout...
133 просмотров

Удаленная функция и ADL
Я столкнулся со следующим запутанным примером, связанным с ADL и удаленными функциями: Первый пример: namespace A { struct S{}; void f(S){cout << "adl" << endl;} } namespace C { //void f() = delete; //void f...
86 просмотров

Поиск зависимых имен, зависящих от аргументов
В этом описании на cppreference.com говорится, что Поиск зависимого имени, используемого в шаблоне, откладывается до тех пор, пока не станут известны аргументы шаблона, когда [...] ADL проверяет объявления функций с внешней связью , которые...
147 просмотров

ADL и определения типов
Короче говоря, я пытаюсь понять поведение Argument-Dependent Lookup в C++. Некоторые утверждения в ISO/IEC 14882:2017 (E) относительно ADL мне непонятны. Надеюсь, кто-нибудь разъяснит мне их. Согласно стандарту, Имена typedef и объявления...
80 просмотров

Зависимые имена шаблонов и C ++ 20 ADL
Рассмотрим следующий пример: namespace N { template<class> struct C { }; template<int, class T> void foo(C<T>); } template<class T> void bar(N::C<T> c) { foo<0>(c); } int main() {...
255 просмотров