«overload-resolution» 태그된 질문

11
const가 아닌 메서드가 private 일 때 public const 메서드가 호출되지 않는 이유는 무엇입니까?
이 코드를 고려하십시오. struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } 컴파일러 오류는 다음과 같습니다. 오류 : 'void A :: foo ()'는 비공개입니다. 그러나 개인 …

5
모호성에 관여하지 않는 경우 메서드를 추가하면 모호한 호출이 추가되는 이유
이 수업이 있습니다 public class Overloaded { public void ComplexOverloadResolution(params string[] something) { Console.WriteLine("Normal Winner"); } public void ComplexOverloadResolution<M>(M something) { Console.WriteLine("Confused"); } } 이렇게 부르면 : var blah = new Overloaded(); blah.ComplexOverloadResolution("Which wins?"); Normal Winner콘솔에 기록 합니다. 그러나 다른 방법을 추가하면 : public void ComplexOverloadResolution(string something, object somethingElse = …

3
이 전환 연산자의 과부하가 선택된 이유는 무엇입니까?
다음 코드를 고려하십시오 . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } 여기서 두 번째 변환 연산자는 과부하 해상도에 의해 선택됩니다. 왜? 지금까지 내가 그것을 이해, 두 사업자에 추론된다 operator int &&() …

3
C ++에서 두 번째 템플릿 인수를 추측하지 못하게하려면 어떻게해야합니까?
그 안에 어딘가에 다음 코드가 있는 C ++ 라이브러리 ( strf )를 사용하고 있습니다. namespace strf { template <typename ForwardIt> inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template <typename Range, typename CharT> inline auto range(const Range& range, const CharT* sep) { /* ... */ } } …

1
함수 인수로서 {}가 왜 모호성을 유발하지 않습니까?
이 코드를 고려하십시오. #include <vector> #include <iostream> enum class A { X, Y }; struct Test { Test(const std::vector<double>&, const std::vector<int>& = {}, A = A::X) { std::cout << "vector overload" << std::endl; } Test(const std::vector<double>&, int, A = A::X) { std::cout << "int overload" << std::endl; } }; int …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.