다음과 같이 내가 불변 String 클래스가 있다고 가정 : #include <iostream>
#include <string>
class String
{
public:
explicit String(const char *Value) : Size(std::strlen(Value)), Value(new char[Size + 1])
{
내가 코드에서, 예를 들어 3 스위프트의 폐쇄와 함수 오버로드 확인에 의해 혼동 해요 : 내가 Narrow하지 Wide 기대 func f<T>(_ a: T) {
print("Wide")
}
func f(_ a: (Int)->(Int)) {
print("Narrow")
}
f({(a: Int) -> Int in return a +
저는 C++을 처음 접했고 아마도 순진한 문제가있었습니다. 나는 다른 smilar 질문이있다, 그러나 나의 것보다는 더 복잡한 문제에 관련된다 (저에게 보인다)다는 것을 알고있다. C++를 사용하여 Arduino 용 펌웨어를 만들려고하고 있으며 오버로드 오류로 인해 스스로 해를 끼쳤습니다. void class1::functionA(void)
{
대신 잘못된 과부하를 선택 : 두 번째 search_with 호출, 컴파일러는 세 번째 오버로드를 선택하는 이유 #include <vector>
#include <functional>
template<typename RandIt, typename T, typename Pred>
auto search_with(RandIt begin, RandIt en
내 확장 방법 해상도에서 예기치 않은 동작이 나타나는 이유를 파악하려고합니다. 나는 Eric Lippert's Closer is Better 기사를 읽었으며 나는 여전히 혼란 스럽다. 먼저 호출 사이트 : 두 개의 서로 다른 어셈블리에, 나는 두 개의 서로 다른 네임 스페이스에 IOrganziationService에 확장 메서드 오버로드를 정의 // Ass
큰 포인터를 원시 포인터 대신 사용자 지정 공유 포인터를 사용하도록 변환 중입니다. 과부하 해결에 문제가 있습니다. 이 예제를 고려하십시오 qualification conversions는 암시 적 변환 시퀀스의 순위에 중요한 역할을하기 때문에는 #include <iostream>
struct A {};
struct B : public A {};
나는 다음과 같은 경우에 오버로드 확인 규칙을 이해하려고 노력하고 참조 : template<typename T>
void f(const T& x) {
std::cout << __PRETTY_FUNCTION__ << std::endl; //-
}
template<typename T>
void f(T& x) { // <> Überladung
다음 코드 prints "func 2". 왜 명시 적 (추론되지 않은) 템플릿 인수가있을 때 컴파일러가 두 번째 템플릿을 더 잘 일치시키는 것으로 처리합니까? 모호성이없는 이유는 무엇입니까? C++ 표준을 인용 해 주시면 감사하겠습니다. #include <iostream>
template<class T>
struct identity
{
ty
과부하 해결에 대한 질문이 있습니다. 유형의 매개 변수 person을 허용하는 제한된 일반 메서드 Greet이 있고 Person에서 파생되어야한다고 가정합니다. 이 Greet 메서드는 person을 매개 변수로 전달하는 다른 클래스의 일부 비 제너릭 메서드를 호출합니다. 비 제네릭 메서드에는 기본 클래스 및 파생 클래스에 대한 여러 가지 오버로드가 있습니다