Свързани въпроси 'overload-resolution'
Резолюция на претоварване с шаблони и препратки към rvalue
Това поведение при разрешаване на претоварване ме озадачава:
#include "stdio.h"
template<class T>
class C
{
public:
C(T v): m(v) {};
T m;
template<class U>
T f(U &&p)
{
printf("rRef...
101 изгледи
schedule
16.09.2022
Разрешаване на претоварване: Предпочитан ли е оператор за директно преобразуване (като следствие от елизия на копиране)?
дадени
struct E
{
};
struct P
{
explicit P(E) {}
};
struct L
{
operator E() {return {};}
operator P() {return P{E{}};}
};
Според езиковия стандарт C++17 трябва ли изразът P{L{}} да се компилира?
Различните компилатори дават...
178 изгледи
schedule
21.09.2022
Относно разрешаването на претоварването на оператора
Да предположим, че два класа имат следния явен и явен операторен модел:
class Foo
{
public static implicit operator decimal (Foo foo)
{
throw new NotImplementedException();
}
public static implicit operator Foo (decimal...
195 изгледи
schedule
07.10.2022
Защо тези претоварвания не са двусмислени?
Следният код се компилира добре с gcc и clang.
template <typename T>
struct identity
{
typedef T type;
};
template <typename T>
void foo(typename identity<T>::type);
template <typename T>
void foo(T);
int main()
{...
191 изгледи
schedule
27.11.2022
Разрешаване на претоварване: Как това не е двусмислено?
Да предположим, че имаме този код, копиран от отделен въпрос:
namespace x
{
void f()
{
}
class C
{
void f()
{
using x::f;
f(); // <==
}
};
}
Името f на...
114 изгледи
schedule
12.11.2022
Защо се избира генеричен метод, когато съществува негенеричен?
Програмата по-долу произвежда този резултат:
Foo<T> called
Process is terminated due to StackOverflowException.
И така, Foo(baz) извиква общия Foo<T> , но Bar(baz) рекурсира и не извиква Bar<T> .
Аз съм на C# 5.0...
434 изгледи
schedule
09.02.2024
Директната инициализация на списък се компилира успешно, но нормалната директна инициализация е неуспешна, защо?
Например кодирайте така:
struct A { A(int); };
struct B { B(A); };
int main()
{
B b{{0}}; // OK
B c({0}); // error
}
Съобщенията за грешка са:
f.cc: In function 'int main()':
f.cc:7:9: error: call of overloaded...
347 изгледи
schedule
28.01.2024
Разрешаване на име на член по време на изпълнение
При даден тип , име и подпис , как мога да направя търсене на член на член с име име > и подпис подпис с помощта на правилата на C# от 7.4 (7.4 е номерът на главата от спецификацията на езика C#) (или поне част от тях... Да кажем, че мога да...
438 изгледи
schedule
08.03.2024