Вопросы по теме 'overload-resolution'
Разрешение имени члена во время выполнения
Учитывая тип , имя и подпись , как я могу выполнить поиск члена с именем name и подпись signature с использованием правил C # 7.4 (7.4 - это номер главы из спецификации языка C #) (или, по крайней мере, их часть ... Допустим, я могу жить с...
438 просмотров
schedule
08.03.2024
Почему эти перегрузки не неоднозначны?
Следующий код отлично компилируется с 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
О разрешении перегрузки оператора
Предположим, есть два класса со следующим неявным и явным шаблоном оператора:
class Foo
{
public static implicit operator decimal (Foo foo)
{
throw new NotImplementedException();
}
public static implicit operator Foo...
195 просмотров
schedule
07.10.2022
Разрешение перегрузки: как это не двусмысленно?
Предположим, у нас есть этот код, скопированный из отдельного вопроса:
namespace x
{
void f()
{
}
class C
{
void f()
{
using x::f;
f(); // <==
}
};
}
Имя...
114 просмотров
schedule
12.11.2022
Почему выбирается общий метод, когда существует не универсальный?
Программа ниже производит этот вывод:
Foo<T> called
Process is terminated due to StackOverflowException.
Итак, Foo(baz) вызывает общий Foo<T> , но Bar(baz) рекурсивно и не вызывает Bar<T> .
Я на С# 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 'B(<brace-enclosed...
347 просмотров
schedule
28.01.2024
Разрешение перегрузки: предпочтителен ли оператор прямого преобразования (как следствие исключения копирования)?
Данный
struct E
{
};
struct P
{
explicit P(E) {}
};
struct L
{
operator E() {return {};}
operator P() {return P{E{}};}
};
Должно ли выражение P{L{}} компилироваться в соответствии со стандартом языка C ++ 17?
Разные...
178 просмотров
schedule
21.09.2022
Наследование шаблонного оператора = в С++ 14: различное поведение с g++ и clang++
У меня есть этот код, который работает, как и ожидалось, с GCC 9.1:
#include <type_traits>
template< typename T >
class A
{
protected:
T value;
public:
template< typename U,
typename...,...
174 просмотров
schedule
03.11.2023
Дополнительное продвижение Swift против универсального разрешения перегрузки
Пожалуйста, рассмотрите следующий код:
protocol P {}
class X {}
class Y: P {}
func foo<T>(_ closure: (T) -> Void) { print(type(of: closure)) }
func foo<T>(_ closure: (T) -> Void) where T: P { print(type(of: closure)) }
let...
84 просмотров
schedule
02.11.2023
Как избежать недопустимой перегрузки из стандартной библиотеки?
В моем проекте С++ 14 я использую
#include <algorithm>
using std::max; // for max(a,b)
но я также хочу предоставить функцию max() , принимающую любое количество аргументов (равного типа). С этой целью я добавил...
123 просмотров
schedule
30.12.2023
Разрешение перегрузки с помощью шаблонов и ссылок 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
Стандартная функция ML Foldl/Foldr с оператором умножения?
Как правильно использовать оператор умножения для Standard ML (SMLNJ) для функций foldr и foldl?
Использование foldr (op *) 1 [1,2,3]; дает ошибку
Standard ML of New Jersey v110.78 [построено: четверг, 31 августа, 03:45:42 2017]
stdIn:1.12...
18 просмотров
schedule
17.11.2023