Предположим, я хочу создать функцию, которую 0 передаю, но я не знаю, является ли это int
или string
, или ....Функция, которая принимает все типы аргументов
Так что-то вроде:
void print(info) {
cout << info;
}
print(5);
print("text");
Предположим, я хочу создать функцию, которую 0 передаю, но я не знаю, является ли это int
или string
, или ....Функция, которая принимает все типы аргументов
Так что-то вроде:
void print(info) {
cout << info;
}
print(5);
print("text");
Один вариант заключается в использовании шаблона функции.
template<typename Arg>
void print(const Arg& arg)
{
std::cout << arg;
}
Почему «Arg &&», между прочим? – Ryan
Функциональный шаблон - правильный термин. @minitech, это идеальная идиома пересылки, но 'const &' будет более уместным здесь, потому что аргумент не изменяется и нет 'std :: forward'. – Potatoswatter
@Potatoswatter К сожалению. Совершенно верно! Спасибо, что указали, что « –
Вы можете сделать это с помощью шаблона функции:
template <typename T>
void print(const T& info)
{
std::cout << info ;
}
Мы могли бы использовать шаблон, чтобы закончить это.
template <typename T>
void print(const T& t)
{
std::cout << t <<std::endl;
}
int main()
{
print(12);
print("123456");
}
Вскоре вы могли бы технически написать, что, как 'автопечати = [] (Уст авто и информация) {соиЬ << информации;};' Я не думаю, что функция версия будет в C++ 14, но это уменьшило бы его до типа '[] print (const auto & info) {cout << info;}'. – chris