2013-06-17 5 views
0

static_cast 연산자의 이름이 마음에 들지 않아서 다른 이름의 함수 (예 : fancy_static_cast)로 감싸고 싶지만 그 의미를 완벽하게 유지한다고 가정 해 보겠습니다. 어떻게해야합니까? 더 구체적으로 static_cast은 인수 또는 참조를 수락합니까? 아니면 인수 표현식에 의존 하는가? 몇 가지 오버로드를 제공해야합니까, 아니면 이와 같은 것을 트릭을할까요?static_cast의 인수 전달

template <typename To, typename From> 
To fancy_static_cast(From&& from) 
{ 
    return static_cast<To>(std::forward<From>(from)); 
} 
+0

['static_cast'] (http://en.cppreference.com/w/cpp/language/static_cast)는 컴파일 타임에 컴파일러가 완전히 처리하는 특별한 컴파일러 키워드입니다. –

+0

@JoachimPileborg 필자는 함수라고 말한 적이 없으며 컴파일러 지시어도 아닙니다. 'static_cast'는 연산자입니다. 그러나 어쨌든 이것이 중요한 이유는 무엇입니까? –

+2

@yurikilochek 연산자에는 함수 의미 체계가 없습니다. "값순"또는 "참조 식"인수를 사용하지 않습니다. 그것들은 l- 값과 r- 값의 관점에서 정의되며 "특정한 l- 값이라면 그 값을 r- 값으로 취급합니다 ..."와 같은 논리를 포함 할 수 있습니다. – Angew

답변

0

한다고 가정 내가 static_cast 연산자의 이름을 좋아하고 다른 이름으로 함수에 포장하고 싶지 않아, fancy_static_cast 말했지만 완벽하게 의미를 유지. 어떻게해야합니까?

하지 않아야합니다.

대신 당신이static_cast을 의미 static_cast을 말한다. 그렇지 않으면 코드의 독자는 처음에는 static_cast을 인식하지 못하고 기능을 볼 때 왜 이런 일을하고 왜 지능을 잃어 버렸는지를 알지 못합니다. 본질적으로 아무것도하지 마라.

코드로 명확하고 선명하게 작성하십시오. 당신이 의미하는 바를 말하면, 지나치게 공상에 빠져 독자를 망설이지 마십시오. 오해의 소지가있는 이름을 사용하지 말고, 마음에 드는 모든 언어 부분을 사용하십시오. 자신과 다른 사람들에게 자신이 작성한 것을 오해 할 수있는 기회를 최대한 적게하십시오.