Форум программистов, компьютерный форум CyberForum.ru

Функция возвращает auto - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Yami
 Аватар для Yami
3 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 21
02.11.2013, 16:50     Функция возвращает auto #1
В настройках ставлю галочку Have g++ follow the C++11 ISO C++ language standard [-std=c++11]

Но все равно не компилится.

C++
1
2
3
4
5
template<typename T1,  typename T2>
auto Max(const T1 &a,  const T2 &b)
{
    return (a>b) ? a : b;
}
Ошибку показывает error: 'Max' function uses 'auto' type specifier without trailing return type|

Добавлено через 3 минуты
Как заставить ее скомпилироваться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 16:50     Функция возвращает auto
Посмотрите здесь:

Функция не возвращает результат=( C++
C++ Функция возвращает объект
C++ Функция get() не возвращает значение
C++ Функция возвращает структуру
Функция не возвращает false C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
02.11.2013, 17:26     Функция возвращает auto #21
В принципе, это и с "-std=c++11 -Wall -Wextra -pedantic" компилируется без предупреждений.
C++
1
2
3
4
5
template <typename T1, typename T2>
auto Max( T1 a, T2 b )->decltype((a > b) ? a : b)
{
    return (a > b) ? a : b;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.11.2013, 17:28     Функция возвращает auto #22
Цитата Сообщение от Tulosba Посмотреть сообщение
С какими типами?
C сравнимыми. double и char, const char * и string, например.

Цитата Сообщение от Tulosba Посмотреть сообщение
А что если Max( 10, "42" )?
Ошибка компиляции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 22:06     Функция возвращает auto
Еще ссылки по теме:

C++ Функция не возвращает значение
Функция не возвращает значение C++
Функция не возвращает значение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2013, 22:06     Функция возвращает auto #23
По decltype есть такой документ: C++ auto and decltype Explained (тернарный оператор - 8 страница).
С ним есть некий нюанс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
template<typename T, typename U>
auto max(T&& t, U&& u) -> decltype(t > u ? t : u)
{
   return t > u ? t : u;
}
 
int main()
{
   int x = 10;
   int y = 20;
   double z = 30.5;
 
   //(присвоить большей переменной значение)
   max(x, y) = 110; //Ok
   max(2.1, z) = 120; //Ok
   //max(x, z) = 110; //Error
   //max(x, 5.2) = 110; //Error
 
   std::cout << "x = " << x << std::endl;
   std::cout << "y = " << y << std::endl;
   std::cout << "z = " << z << std::endl;
 
   return 0;
}
Yandex
Объявления
02.11.2013, 22:06     Функция возвращает auto
Ответ Создать тему
Опции темы

Текущее время: 01:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru