-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtype_inference.cpp
52 lines (43 loc) · 1.44 KB
/
type_inference.cpp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//
// Created by Jonathan Hollocombe on 06/06/2016.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#include <iostream>
#include <vector>
auto auto_function() {
return 1;
}
auto auto_function_with_return_type() -> double {
return 1;
}
auto derived_types(int x, double y) -> decltype(x + y) {
return x + y;
}
int main()
{
auto vec = std::vector<double>{ 1, 2, 3, 4, 5 }; // variable declaration
auto mult = [](double x, int p) { return x * p; }; // lambda type (C++11)
auto square = [](const auto& x) { return x * x; }; // lambda type (C++14)
for (auto& x : vec) {
x = square(x);
}
for (const auto& x : vec) {
std::cout << x << "\n";
}
std::cout << auto_function() << "\n";
std::cout << auto_function_with_return_type() << "\n";
std::cout << derived_types(1, 3.0) << "\n";
return 0;
}