Resultados da pesquisa a pedido "argument-dependent-lookup"

0 a resposta

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 ...

3 a resposta

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 ...

1 a resposta

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> ...

2 a resposta

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 ...

4 a resposta

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 ...

3 a resposta

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 ...

1 a resposta

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 ...

3 a resposta

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 ...

2 a resposta

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 ...

1 a resposta

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 == ...