int, double 및 문자열과 같은 특정 데이터 형식에서 작동하는 오버로드 된 함수가 있습니다. 이러한 함수의 대부분은 동일한 작업을 수행하며 특정 데이터 형식 집합 만 허용됩니다. 즉, 형식 안전성을 잃어 버리고 (함수 내에서 유효성 검사를 위해 잠재적으로 런타임 문제가 발생 함) 단순한 일반 템플릿 함수를 만들 수 없다는 것을 의미합니다.준 일반 함수
"semi-generic 컴파일 타임 유형 안전 기능"을 만들 수 있습니까? 그렇다면 어떻게? 그렇지 않다면 C++ 0x로 나타날 것입니까?
(유효하지 않은) 아이디어입니다.
template <typename T, restrict: int, std::string >
void foo(T bar);
...
foo((int)0); // OK
foo((std::string)"foobar"); // OK
foo((double)0.0); // Compile Error
참고 : 생성자와 할당 연산자가 오버로드 된 클래스를 생성하고 해당 클래스의 변수를 함수에 전달할 수 있다는 것을 알고 있습니다.
. 또한 유형은 런타임에 확실히 확인되지 않습니다. – UncleBens
UncleBens : 복식에 대한 위의 예제가 컴파일 될 때까지 "유형 안전성"이 없습니다. –