Resultados de la búsqueda a petición "argument-dependent-lookup"
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 ...
¿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 ...
¿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 ...
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 ...
¿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 ...
¿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 ...
¿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 ...
¿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 ...
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 && ...
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' ...