Resultados de la búsqueda a petición "argument-dependent-lookup"

3 la respuesta

Operador de sobrecarga >> para std :: pair <int, int>

Estoy tratando de usarboost::lexical_cast en unstd::pair<int, int>. #include <iostream> #include <utility> #include <boost/lexical_cast.hpp> namespace my { // When my_pair is a user defined type, this program compiles // and runs without any ...

3 la respuesta

¿Por qué ADL no funciona con Boost.Range?

Considerando: #include <cassert> #include <boost/range/irange.hpp> #include <boost/range/algorithm.hpp> int main() { auto range = boost::irange(1, 4); assert(boost::find(range, 4) == end(range)); }Demostración en vivo de ...

2 la respuesta

¿Por qué esta llamada a swap () es ambigua?

El siguiente programa #include <algorithm> #include <utility> #include <memory> namespace my_namespace { template<class T> void swap(T& a, T& b) { T tmp = std::move(a); a = std::move(b); b = std::move(tmp); } template<class T, class Alloc ...

1 la respuesta

Ocultar nombre usando declaración

#include <iostream> struct H { void swap(H &rhs); }; void swap(H &, H &) { std::cout << "swap(H &t1, H &t2)" << std::endl; } void H::swap(H &rhs) { using std::swap; swap(*this, rhs); } int main(void) { H a; H b; a.swap(b); }Y este es el ...

5 la respuesta

¿Por qué se inventó la búsqueda dependiente de argumentos?

¿Por qué se inventó la búsqueda dependiente de argumentos (ADL)? ¿Es solo para que podamos escribir?cout << stuff en lugar destd::operator<<(cout, stuff)? Si ese es el caso, ¿por qué ADL no se limitó a los operadores en lugar de todas ...

3 la respuesta

¿Qué significa `usar std :: swap` dentro del cuerpo de una implementación de método de clase?

Durante algunas prácticas de c ++, estaba tratando de aprender y adoptar el modismo de intercambio de copias siguiendo esta explicación detallada sobre esta pregunta:el modismo Copy-Swap [https://stackoverflow.com/q/3279543/356440]. Pero ...

2 la respuesta

¿Por qué la función declarada dentro de otra función no participa en la búsqueda dependiente del argumento?

Considere un ejemplo simple: template <class T> struct tag { }; int main() { auto foo = [](auto x) -> decltype(bar(x)) { return {}; }; tag<int> bar(tag<int>); bar(tag<int>{}); // <- compiles OK foo(tag<int>{}); // 'bar' was not declared in this ...

2 la respuesta

¿Existe una forma legal de imprimir tuplas y pares usando el operador <<?

Tengo un conjunto de plantillas / funciones que me permiten imprimir una tupla / par suponiendo que cada tipo en la tupla / par tieneoperator<< definido para ello. Desafortunadamente, debido a 17.4.3.1, es ilegal agregar mioperator<< sobrecargas ...

1 la respuesta

El operador de comparación para std :: vector <T> no puede encontrar el operador de comparación para T

El siguiente código muy simple no compilará #include <vector> #include <string> namespace Foobar { struct Test { std::string f; std::uint16_t uuid; }; } bool operator==(const Foobar::Test& lhs, const Foobar::Test& rhs){ return lhs.f == rhs.f && ...

1 la respuesta

Basado en rango para bucles y ADL

Los C ++ 0x borrador de trabajo estándar [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf] declara (sección 6.5.4) lo siguiente sobre las llamadas begin () y end () que están implícitas en un bucle for basado en rango: 'begin' ...