Как сделать так, чтобы класс-оболочка<int> с преобразующим конструктором победил обертку<double> в разрешении перегрузки ⇐ C++
Как сделать так, чтобы класс-оболочка<int> с преобразующим конструктором победил обертку<double> в разрешении перегрузки
Я пытаюсь создать оболочку для обработки арифметических параметров с помощью специальной логики.
https://godbolt.org/z/zG959e5Pz
#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } интервал основной () { функция(1); // целое: 1 функция (1.0); // целое: 1 } Однако, когда я объявляю функцию перегрузки для func, я встречаю ошибку компиляции. Похоже, что компилятор не может выбрать конкретную перегруженную функцию.
#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } void func(wrapper a) { printf("double: %.2f\n", a.value); } интервал основной () { функция(1); // функция(1.1); } https://godbolt.org/z/YEo4c3E69
ошибка компилятора
: В функции 'int main()': :18:9: ошибка: вызов перегруженной функции func(int) неоднозначен 18 | функция(1); | ~~~~^~~ :9:6: примечание: кандидат: 'void func(wrapper)' 9 | void func(wrapper a) { | ^~~~ :13:6: примечание: кандидат: 'void func(wrapper)' 13 | void func(wrapper a) { | ^~~~ Как это исправить?
Я пытаюсь создать оболочку для обработки арифметических параметров с помощью специальной логики.
https://godbolt.org/z/zG959e5Pz
#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } интервал основной () { функция(1); // целое: 1 функция (1.0); // целое: 1 } Однако, когда я объявляю функцию перегрузки для func, я встречаю ошибку компиляции. Похоже, что компилятор не может выбрать конкретную перегруженную функцию.
#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } void func(wrapper a) { printf("double: %.2f\n", a.value); } интервал основной () { функция(1); // функция(1.1); } https://godbolt.org/z/YEo4c3E69
ошибка компилятора
: В функции 'int main()': :18:9: ошибка: вызов перегруженной функции func(int) неоднозначен 18 | функция(1); | ~~~~^~~ :9:6: примечание: кандидат: 'void func(wrapper)' 9 | void func(wrapper a) { | ^~~~ :13:6: примечание: кандидат: 'void func(wrapper)' 13 | void func(wrapper a) { | ^~~~ Как это исправить?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 288 Просмотры
-
Последнее сообщение Anonymous
-