0
auto
키워드의 사용이 최신 버전의 C++에서보다 효율적으로 처리되었다고 생각합니다. data type specifier
없이 auto
이전에 서면 int
로 기본 설정됩니다 :함수 오버로딩 대신`auto` 매개 변수를 사용하는 방법은 무엇입니까?
auto value = 5.7; // implicit conversion to int
std::cout << value; // 5
auto val2 = "Hello there!"; // error: cannot convert from char* to int
을 내가 할 수있는 14.0 ++ 새로운 MSVC에서 :
auto val = "Hello"; // val is of type char*
std::cout << val; // Hello
auto dVal = 567.235; // dVal is of type double. Ok
위는 이것이 부담이 제네릭 형식을 얻을 수 없어 너무 좋다.
그러나이 예제를 고려 : 나는 한 컴파일러는 입력 값에 따라 내 변수에 적합한 유형을 선택 위와 같이 원하는 무엇
#include <iostream>
using namespace std;
void print(auto param) { // error here: A parameter cannot have type that contains 'auto'
cout << param << endl;
}
int main() {
print("Hello!"); // string
print(57); // int
print(3.14); // double
std::cout << std::endl;
std::cin.get();
return 0;
}
. 함수 오버플로를 극복하고 싶었습니다. print
은 auto
변수를 취합니다. 그러면 컴파일러를 호출하여 매개 변수의 관련 데이터 유형을 전달합니다.
하지만 컴파일시 얻을 문제 오류 :
A parameter cannot have type that have 'auto'.
것은이 :이 프로그램은 gcc
및 Ideone
컴파일러에 잘 작동 : https://ideone.com/i3DKzl
[좋은 책] (https://stackoverflow.com/a/388282/2069064)의 템플릿 섹션을 확인하십시오. – Barry