Небольшая шпаргалка:
#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; }
Комментариев нет:
Отправить комментарий