2013-09-21 7 views
8

C++에 대한 약간의 언어 확장을 생각하고 제안서 (http://pdfcast.org/pdf/user-defined-type-qualifiers-1)에 대한 초안을 작성했습니다.사용자 정의 한정자

사용자는 코드 (즉, 메소드)가 동일한 자격을 호출하는 것만을 보증하기 위해 const 및 volatile과 같은 한정자를 정의 할 수 있습니다.

이 질문이 어떤 언어 규칙과 충돌하거나 내가 놓친 경우에 문제가됩니다.

+5

이런 종류의 질문에 대해 많은 관심을받을 지 모르겠습니다. SO 질문은 매우 구체적이며 일반적으로 소스 코드를 포함합니다 ([여기에 대해 나는 어떤 주제를 물을 수 있습니까?] (http://stackoverflow.com/help/on-topic) 참조). "미래 제안 (Future Proposals)"포럼에는 "iso-cpp"(http://isocpp.org/forums) 웹 사이트가 있습니다 : "새로운 언어 또는 도서관 기능을 제안하고 아이디어에 대한 초기 피드백을 얻기를 원하십니까? 자세한 제안서를 작성 하시겠습니까? ". – dyp

+1

* 사이드 리마 : * 현재 표기법이'fixed_point <24,12>'대'u_fixed_point <24,12>'이면'fixed_point '(사실, 나는 나는 심지어 전에 이것을 보았다고 생각한다.) – dyp

+0

나는 이것이 @DyP에 동의한다. 이것은 이것을 가져 오기위한 잘못된 장소 일 것이다. 주제에 대한 Upvote는 여기에 묻지 않는다 ... –

답변

1

정말 StackOverflow 주제가 아닙니다. 하지만 예, "사용자 정의 유형 한정자"는 깔끔한 아이디어이며 오랜 역사가 있습니다. 일반적으로 신뢰도 분석에 사용됩니다 (예 : 사용자가 제어하고 잠재적으로 악의적 인 비트가 신뢰할 수있는 비트처럼 사용되지 않도록하고, 표시하기 전에 모든 HTML이 올바르게 이스케이프 처리되는지 확인).

http://www.cs.umd.edu/~jfoster/papers/toplas-quals.pdf는 주 동기 등 오점 분석을 가지고, 또한 보안 정보 흐름 언급 (즉, 같은 코드의 비보안 부분으로 누출하지 않는 암호 키의 비트로서 반드시 중요한 정보를 결정).

즉, 대부분의 응용 프로그램에서 "사용자 정의 데이터 형식"으로 충분합니다. 거의 항상 기계적으로 변형 할 수 있습니다. std::string [[tainted]] xTainted<std::string> x으로 변경하십시오.

Tainted<std::string> x; 
cin >> x; // unfortunately, this implicit conversion of Tainted<T>& to T& 
      // is exactly what we want to avoid