Вопросы по теме 'overload-resolution'

Поведение методов перегрузки С# с интерфейсом
Возможный дубликат: C# 4: конфликтующие перегруженные методы с необязательными параметрами У меня просто есть одно небольшое исследование и создан следующий код. namespace Test { class Program { public interface ITestA {...
2988 просмотров

Почему это требуется здесь (метод расширения)?
Мета-примечание: поиск по слову "это" невозможен. Я только что столкнулся со странным сценарием в ASP.NET, где требуется ключевое слово this . Но это не для разрешения между локальными переменными и переменными экземпляра, как вы могли бы...
263 просмотров

Разрешение перегрузки метода с использованием динамического аргумента
Возможно, на это уже был дан ответ. Я вижу много вопросов о «разрешении перегрузки динамического метода», но ни один из них не связан с передачей аргумента dynamic . В следующем коде в Test последний вызов M не может быть разрешен ( не...
2486 просмотров

Странное поведение компилятора С# (разрешение перегрузки)
Я обнаружил очень странное поведение компилятора С# для следующего кода: var p1 = new SqlParameter("@p", Convert.ToInt32(1)); var p2 = new SqlParameter("@p", 1); Assert.AreEqual(p1.Value, p2.Value); // PASS var x = 0; p1 = new...
276 просмотров
schedule 05.01.2023

правила разрешения перегрузки c#
предположим следующие методы расширения: public static string ToFooBarString(this object obj) { ... } public static string ToFooBarString< T >(this IEnumerable< T > obj) { ... } Теперь я вызываю это поверх реализации интерфейса...
180 просмотров
schedule 19.10.2022

Разрешение не виртуального метода - почему это происходит
Мое понимание (в С#) того, как разрешаются невиртуальные методы, заключается в том, что это зависит от типа переменной (а не от типа экземпляра). Взгляните на код ниже. class Program { static void Main(string[] args) { Sedan...
162 просмотров
schedule 04.09.2023

Разрешение перегрузки при применении оператора | к перечислениям различных типов
После прочтения недавнего вопроса Операции между различными типами перечислений разрешены в другом объявлении перечисления, но не в другом месте . Я придумал этот пример. : enum Alpha : long { X, } enum Beta : ulong...
224 просмотров
schedule 08.02.2024

Строковый литерал соответствует логической перегрузке вместо std::string
Я пытаюсь написать класс С++ с некоторыми перегруженными методами: class Output { public: static void Print(bool value) { std::cout << value ? "True" : "False"; } static void Print(std::string value) {...
6315 просмотров

Неоднозначность, связанная с шаблонным оператором преобразования и неявным конструктором копирования
clang и gcc различаются по поведению для следующего кода: struct foo { foo(int); }; struct waldo { template <typename T> operator T(); }; int main() { waldo w; foo f{w}; } Этот код принимает clang с вызовом...
768 просмотров

Неоднозначное разрешение перегрузки С++ - GCC
Я пытаюсь понять, почему GCC выбирает f(char, A<C, 5> &var) для разрешения перегрузки в коде ниже: template <class C, int N> struct A { }; template <class C> struct A<C, 8> { static_assert(sizeof(C) > 8, "Assertion...
314 просмотров
schedule 10.01.2024

Неопределенная перегрузка универсального метода с типами, допускающими значение NULL
Скажем, у меня есть два общих перегруженных метода формы: public string Do<T>(T maybeValue, Func<T, string> func) where T : class { if(maybeValue == null) return null; return func(maybeValue); } public string Do<T>(T?...
1077 просмотров

Перегрузка функций становится неоднозначной
При перегрузке функций: void add(int a) { a=7; cout<<"int"; } void add(double a) { a=8.4; cout<<"double"; } void add(int *b) { *b=4; cout<<"pointer"; } int main() { char i='a'; //char add(i);...
471 просмотров

Приоритет инициализации списка от объекта того же типа
#include <iostream> #include <initializer_list> using namespace std; struct CL { CL(){} CL (std::initializer_list<CL>){cout<<1;} CL (const CL&){cout<<2;} }; int main() { CL cl1; CL cl2 {cl1};...
277 просмотров

Kotlin: встроенная лямбда и неоднозначность разрешения перегрузки
У меня есть простой фабричный шаблон, где реализация определяется разрешением перегрузки. Проблема в том, что компилятор Kotlin жалуется на «Неоднозначность разрешения перегрузки..» для встроенной лямбды. class Foo(){ companion object Factory...
1387 просмотров
schedule 02.11.2022

Пожелание: скрытие устаревшего метода другой перегрузкой с использованием параметров по умолчанию
Пожалуйста, подождите, это не (совсем!) Дубликат любого из этих ответов SO: Конфликт перегруженных методов с необязательными параметрами Разрешение перегрузки и дополнительные параметры в C # 4 Вызов метода перегрузки с параметрами по...
212 просмотров

путаница, перегружающая функции-члены для rvalue и lvalues
У меня есть следующая установка: struct foo { void bar( ) & { std::cout << "lvalue\n"; } void bar( ) && { std::cout << "rvalue\n"; } ~foo( ) { bar( ); } }; int main( int arg, char **argv ) { foo{...
85 просмотров
schedule 25.04.2024

Определите, какая перегрузка будет вызываться при передаче типа в качестве ссылки
У меня есть бесплатные функции foo , которые перегружены для определенных пользователем типов X следующим образом ( C является библиотечным типом, вызывающим foo ): template <typename C> void foo(C&, const X&) {...} Я могу...
88 просмотров
schedule 23.11.2023

Разрешение перегрузки со ссылками на методы и специализациями интерфейса функций для примитивных типов
Допустим, у нас есть класс и перегруженная функция: public class Main { static final class A { } public static String g(ToIntFunction<? extends A> f) { return null; } public static String g(ToDoubleFunction<?...
192 просмотров

Разве не имеет смысла перегрузить noexcept?
Я пытаюсь понять функцию noexcept. Я знаю, что это может сбивать с толку, но, кроме того, это не может быть выведено из вызывающей функции, когда это возможно. Это нерабочий пример этой ситуации, void f(){} void f() noexcept{} // not allowed...
659 просмотров

Несоответствие в поиске имени среди разных компиляторов
Прежде всего, не стесняйтесь предлагать лучшее название для этого вопроса. Рассмотрим следующую программу: #include <numeric> namespace N { class C {}; } int operator+( int i, N::C ) { return i+1; } int main() { N::C a[10];...
124 просмотров