Resultados da pesquisa a pedido "argument-dependent-lookup"
Cxx-prettyprint (para contêineres padrão) define seus operadores de saída dentro do namespace std - isso é uma violação padrão?
Eu tenho usado com sucessocxx-prettyprint: Uma impressora bonita de contêiner C ++ [http://louisdx.github.io/cxx-prettyprint/]para registrar valores de contêiner. (Veja tambémRecipientes C ++ STL com impressão ...
Comportamento interessante do compilador com espaços para nome
Suponha o seguinte código: #include <iostream> using namespace std; namespace X { class A{}; void f(A a){} void g(int a){} } int main() { X::A a; f(a); g(5); }Ao compilar o código, ocorre o seguinte erro de compilação: main.cpp: Na função 'int ...
A refatoração de um operador sobrecarregado em uma função que não é membro pode quebrar algum código?
Considere um modelo de classe herdado com operadores de adição sobrecarregados+= e+ template<class T> class X { public: X() = default; /* implicict */ X(T v): val(v) {} X<T>& operator+=(X<T> const& rhs) { val += rhs.val; return *this; } X<T> ...
Quais são as armadilhas da ADL?
Há algum tempo, li um artigo que explicava várias armadilhas da pesquisa dependente de argumento, mas não consigo mais encontrá-la. Tratava-se de obter acesso a coisas às quais você não deveria ter acesso ou algo assim. Então, pensei em perguntar ...
Por que o ADL não encontra modelos de função?
Que parte da especificação C ++ restringe a pesquisa dependente de argumento da localização de modelos de função no conjunto de espaços para nome associados? Em outras palavras, por que a última chamada emmain abaixo falha ao compilar? namespace ...
Operador de sobrecarga >> para std :: pair <int, int>
Estou tentando usarboost::lexical_cast com umstd::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 ...
Baseado em intervalo para loops e ADL
oRascunho de trabalho padrão C ++ 0x [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf]afirma (seção 6.5.4) o seguinte sobre as chamadas begin () e end () implícitas em um loop for baseado em intervalo: 'begin' e 'end' são ...
Por que o ADL não está funcionando com o 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)); }Demonstração ao vivo ...
Por que essa chamada para swap () é ambígua?
O seguinte 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 ...
O operador de comparação para std :: vector <T> falha ao encontrar o operador de comparação para T
O código muito simples a seguir não será compilado #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 == ...