Вопросы по теме 'overload-resolution'
оператор присваивания для пустого inizializer_list
Можете ли вы объяснить, как контейнеры STL обрабатывают оператор присваивания с пустым списком инициализаторов?
когда я сделаю что-то вроде этого:
vector<int> v;
v = { };
вызываемая функция не :
vector& operator=...
435 просмотров
schedule
13.11.2021
Разрешение перегрузки и частичный порядок шаблонов
Рассмотрим эту простую пару шаблонов функций.
template <typename T>
void foo(T& ) { std::cout << __PRETTY_FUNCTION__ << '\n'; }
template <typename C>
void foo(const C& ) { std::cout << __PRETTY_FUNCTION__...
855 просмотров
schedule
29.10.2021
Разрешение перегрузки с пустым инициализатором скобок: указатель или ссылка?
Я столкнулся с реальным WTF-моментом, когда обнаружил, что приведенный ниже код выводит «указатель».
#include <iostream>
#include <utility>
template<typename T>
struct bla
{
static void f(const T*) { std::cout <<...
748 просмотров
schedule
07.09.2021
Какое из этих преобразований должно быть неоднозначным?
У меня есть такой код:
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 просмотров
schedule
31.10.2021
Связаны ли дженерики с частью сигнатуры метода в 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 просмотров
schedule
04.11.2021
Путаница с поиском имени функции
Меня смущают некоторые правила в стандарте. Приведу их здесь:
[basic.lookup.argdep] :
Пусть X будет набором поиска, созданным с помощью неквалифицированного поиска , а Y будет набором поиска, созданным поиском, зависящим от аргументов...
89 просмотров
schedule
15.09.2021
почему функция явного преобразования возвращаемого типа производного класса не является кандидатом в контексте прямой инициализации
Рассмотрим следующий пример:
#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 просмотров
schedule
28.09.2021
ошибка mypy, перегрузка с помощью Union / Optional, перегруженные сигнатуры функций 1 и 2 перекрываются с несовместимыми типами возврата
Итак, начнем с примера. Предположим, у нас есть несколько типов, которые можно комбинировать вместе, допустим, мы используем __add__ для реализации этого. К сожалению, из-за обстоятельств, не зависящих от нас, все должно допускать значение NULL,...
1965 просмотров
schedule
02.03.2022
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 просмотров
schedule
03.03.2022
Выведение аргументов шаблона во время частичного упорядочивания, когда параметры являются пакетом параметров функции
N4527 14.8.2.4 [temp.deduct.partial]
3 Типы, используемые для определения порядка, зависят от контекста, в котором выполняется частичное упорядочение:
(3.1) - В контексте вызова функции используемые типы - это те типы параметров...
227 просмотров
schedule
05.03.2022
Вывод аргументов шаблона функции с помощью вариативного шаблона класса в качестве параметра вызова функции
Все примеры взяты здесь и здесь .
Конкретно,
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 просмотров
schedule
01.06.2022
Почему `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 просмотров
schedule
17.08.2022
Почему перегрузка шаблона лучше, чем простое преобразование?
#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 просмотров
schedule
27.09.2022
Разрешение перегрузки работает для обычного метода, но не для конструктора
Моя цель — иметь серию перегрузок, при которых вызывается правильная версия метода в зависимости от типа параметра (известного только во время выполнения). Однако я столкнулся с интересной проблемой в случае, когда метод, который я хочу перегрузить,...
50 просмотров
schedule
06.10.2022