170 похожих чатов

Здравствуйте не давно начал изучат с++ хочу сделать так

#include <iostream>
using namespace std;
template<typename T>
T cal(T x, T z) {
return x + z;
}


int main()
{
cout << cal(7, 8.0);

} Но программа сообщает об ошибке, как ее можно решить ?

15 ответов

8 просмотров
Александр-Ниткин Автор вопроса
Егор (Дима)
7.0

а если мы хоть чтоб был тип integer ?

Можно допускать параметры различных шаблонных типов, либо положить один в undeducible context, выводящийся из первого.

Александр-Ниткин Автор вопроса

Если у вас параметры разные то и в шаблоне их сделайте разными

Александр Ниткин
извините как вы переделали пример ?

template < typename Tl, typename Tr > auto cal ( Tl lhs, Tr rhs ) -> decltype(lhs + rhs); Что-то подобное, например.

Sergey Anisimov
template < typename Tl, typename Tr > auto cal...

я так понимаю, чтобы разобраться, что вернётся нужно знать правила преобразования типов?

Il V
я так понимаю, чтобы разобраться, что вернётся нуж...

Компилятор их знает и, таким образом, возвращаемый тип выводит.

Sergey Anisimov
Компилятор их знает и, таким образом, возвращаемый...

ну это я понимаю, но я как программист, когда пишу код, должен же закладываться на конкретное поведение, в данном случае, при вызове функции, я дожен знать как будут производиться преобразования тапов, чтобы не получить неожиданный результат

Il V
ну это я понимаю, но я как программист, когда пишу...

Не в этом смысле, полагаю: подобный шаблон для двух произвольных типов может возвращать любой пользовательский третий, предугадать который заранее невозможно.

Sergey Anisimov
Не в этом смысле, полагаю: подобный шаблон для дву...

а автовывод не будет работать в вашем варианте?

Il V
а автовывод не будет работать в вашем варианте?

Будет, об этом и речь. Но Вы-то при написании шаблона знать результат не можете.

Вы хоть о компиляторе позаботьтесь. Вы не указываете ему тип в шаблон, он должен сам его вывести, в одном месте вроде это int, в другом double, что ему остаётся делать?

Александр-Ниткин Автор вопроса
Ramil Rizvanov
Вы хоть о компиляторе позаботьтесь. Вы не указывае...

Как лучше код записать покажите пример пожалуйста

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Карта сайта