Небольшая шпаргалка:
#include <iostream>
template <typename T>
T func1(T f) {
return f;
}
template <typename T>
T func2(T& f) {
return f;
}
template <typename T>
T func3(const T& f) {
return f;
}
template <typename T>
T func4(T&& f) {
return f;
}
void func5(const int * const param1,
const int * param2,
int * param3) {
auto p1 = param1; // p1 = const int*; same as for auto *
auto p2 = param2; // p2 = const int*; same as for auto *
auto p3 = param3; // p2 = int*; same as for auto *
auto &rp1 = param1; // p1 = const int *const &; same as for auto &&
auto &rp2 = param2; // p2 = const int *&; same as for auto &&
auto &rp3 = param3; // p3 = int *&; same as for auto &&
}
int main(int argc, char* argv[]) {
int x = 10;
int &rx = x;
const int &crx = x;
func1(x); // T = int; param = int;
func1(rx); // T = int; param = int;
func1(crx); // T = int; param = int;
func2(x); // T = int; param = int&;
func2(rx); // T = int; param = int&;
func2(crx); // T = const int; param = const int&;
func3(x); // T = int; param = const int&;
func3(rx); // T = int; param = const int&;
func3(crx); // T = int; param = const int&;
func4(x); // T = int&; param = int&;
func4(rx); // T = int&; param = int&;
func4(crx); // T = const int&; param = const int&;
func4(42); // T = int; param = int&&;
return 0;
}
Комментариев нет:
Отправить комментарий