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

оператор присваивания для пустого inizializer_list
Можете ли вы объяснить, как контейнеры STL обрабатывают оператор присваивания с пустым списком инициализаторов? когда я сделаю что-то вроде этого: vector<int> v; v = { }; вызываемая функция не : vector& operator=...
435 просмотров

Разрешение перегрузки и частичный порядок шаблонов
Рассмотрим эту простую пару шаблонов функций. template <typename T> void foo(T& ) { std::cout << __PRETTY_FUNCTION__ << '\n'; } template <typename C> void foo(const C& ) { std::cout << __PRETTY_FUNCTION__...
855 просмотров

Разрешение перегрузки с пустым инициализатором скобок: указатель или ссылка?
Я столкнулся с реальным WTF-моментом, когда обнаружил, что приведенный ниже код выводит «указатель». #include <iostream> #include <utility> template<typename T> struct bla { static void f(const T*) { std::cout <<...
748 просмотров

Какое из этих преобразований должно быть неоднозначным?
У меня есть такой код: class bar; class foo { public: operator bar() const; }; class bar { public: bar(const foo& foo); }; void baz() { foo f; bar b = f; // [1] const foo f2; bar b2 = f2; // [2] } GCC выдает...
232 просмотров

Связаны ли дженерики с частью сигнатуры метода в Java?
Сегодня я понял, что это компилируется и работает нормально: public class Test { public static <T> T handle(T val) { System.out.println("T"); return val; } public static <T extends String> T handle(T val)...
241 просмотров
schedule 03.12.2021

Почему при вызове неоднозначного ctor ошибки времени компиляции нет?
#include <iostream> #include <vector> int main() { auto v1 = std::vector<std::size_t>(std::size_t{8}); std::cout << v1.size() << std::endl; auto v2 = std::vector<std::size_t>{std::size_t{8}};...
101 просмотров

Путаница с поиском имени функции
Меня смущают некоторые правила в стандарте. Приведу их здесь: [basic.lookup.argdep] : Пусть X будет набором поиска, созданным с помощью неквалифицированного поиска , а Y будет набором поиска, созданным поиском, зависящим от аргументов...
89 просмотров

почему функция явного преобразования возвращаемого типа производного класса не является кандидатом в контексте прямой инициализации
Рассмотрим следующий пример: #include <iostream> struct A{ A() = default; A(A const&){} }; struct B:A{}; struct C{ explicit operator B(){ return B{}; } }; int main(){ C c; A a(c); // #1 } GCC и...
213 просмотров

ошибка mypy, перегрузка с помощью Union / Optional, перегруженные сигнатуры функций 1 и 2 перекрываются с несовместимыми типами возврата
Итак, начнем с примера. Предположим, у нас есть несколько типов, которые можно комбинировать вместе, допустим, мы используем __add__ для реализации этого. К сожалению, из-за обстоятельств, не зависящих от нас, все должно допускать значение NULL,...
1965 просмотров

c++: вариативный шаблон и перегрузка функций
см. пример ниже в реальном времени: https://onlinegdb.com/Hkg6iQ3ZNI #include <iostream> #include <utility> #include <type_traits> class A { public: A(int v=-10):v_(v){} void print() { std::cout...
61 просмотров

Выведение аргументов шаблона во время частичного упорядочивания, когда параметры являются пакетом параметров функции
N4527 14.8.2.4 [temp.deduct.partial] 3 Типы, используемые для определения порядка, зависят от контекста, в котором выполняется частичное упорядочение: (3.1) - В контексте вызова функции используемые типы - это те типы параметров...
227 просмотров

Вывод аргументов шаблона функции с помощью вариативного шаблона класса в качестве параметра вызова функции
Все примеры взяты здесь и здесь . Конкретно, template<class...> struct Tuple { }; template< class... Types> void g(Tuple<Types ...>); // #1 // template<class T1, class... Types> void g(Tuple<T1,...
103 просмотров
schedule 21.03.2022

Частичное упорядочение шаблонов - почему здесь частичное вычитание успешно
Рассмотрим следующий простой (в той степени, в которой когда-либо возникают вопросы по шаблону): #include <iostream> template <typename T> struct identity; template <> struct identity<int> { using type = int; };...
1312 просмотров

Почему `int* Get()` вызывается вместо `const int& Get()`?
У меня есть класс B с двумя методами, один из которых возвращает указатель на переменную-член, а другой возвращает константную ссылку на переменную. Я пытаюсь вызвать эти методы. Во время вызовов я сохраняю возвращаемые значения в...
186 просмотров
schedule 02.06.2022

Разрешение перегрузки С++ - неоднозначное совпадение
Я пытался поэкспериментировать с некоторыми базовыми концепциями разрешения перегрузок, используя следующий тестовый код: void foo() { void F(int x, int y); // F1 void F(char x, double y); // F2 F('A', 5); } Я «пытался»...
79 просмотров
schedule 08.06.2022

Строки в стиле C для разрешения перегрузки
Можно ли объяснить, почему следующий код не работает должным образом? В этом случае я бы предположил, что оба static_asserts будут пройдены, хотя тот, который указан с помощью Failed , похоже, не будет принят. Мое понимание разрешения перегрузки...
41 просмотров
schedule 01.07.2022

VS 11 с std :: future - это ошибка?
Недавно я установил предварительную версию Visual Studio 11 Developer Preview. Играя с потоками и фьючерсами, я наткнулся на такую ​​схему: #include <future> #include <iostream> int foo(unsigned a, unsigned b) { return 5; } int...
2566 просмотров

Почему перегрузка шаблона лучше, чем простое преобразование?
#include <iostream> using namespace std; template<typename T> void func(T t) { std::cout << "matched template\n"; } void func(long x) { std::cout << "matched long\n"; } int main() { func(0); } выход: matched...
99 просмотров
schedule 23.08.2022

Разрешение перегрузки с несколькими функциями и несколькими операторами преобразования
Рассмотрим простой код: #include<iostream> struct A { operator double(){ std::cout<<"Conversion function double chosen."<<std::endl; return 1.1; } operator char(){ std::cout<<"Conversion...
359 просмотров

Разрешение перегрузки работает для обычного метода, но не для конструктора
Моя цель — иметь серию перегрузок, при которых вызывается правильная версия метода в зависимости от типа параметра (известного только во время выполнения). Однако я столкнулся с интересной проблемой в случае, когда метод, который я хочу перегрузить,...
50 просмотров