2014-02-19 2 views
0

필자는 메서드에서 몇 가지 부스트 기능을 사용하는 템플릿 클래스를 사용합니다. 이 클래스가 템플릿이기 때문에 메서드가 헤더 파일에 구현되어야합니다. 나는 코드를보다 쉽게 ​​읽을 수 있도록 몇 가지 using 선언을 사용개인 네임 스페이스의 헤더 파일에 지시문 사용

namespace network { 
namespace v1 { 
    namespace detail { 
    using boost::phoenix::if_; 
    using boost::for_each; 
    /* some more functions */ 

    template <class T> 
    class Some { 
     public: 
     Some() { 
      for_each(inVector, /* some phoenix code */); 
     } 
     private: 
     vector<int> intVector; 
    }; 
    } 

    template <class T> using Some = detail::Some<T>; 
} 
} 

는 헤더에 using이 방법을 사용하는 것이 안전합니까? 누군가가 using namespace network::v1::detail;을 .cpp 파일에 사용하지 않을 것이라고 생각합니다. 따라서 세부 네임 스페이스에 추가 된 함수가 이름 충돌을 일으킬 것으로 예상하지는 않습니다. 내가 잘못?

+0

이 코드에는 제목 소유권으로 -directives가 아닌 _-declaration을 사용합니다. –

답변

1

예, 안전합니다. 사용 선언은 세부 네임 스페이스에만 부스트 기능을 추가합니다. 당신은 기본적으로 당신 자신의 질문에 대답했습니다 :-)

편집 : 한번 더 생각해보십시오. 누군가가 당신의 세부 네임 스페이스와 부스트 네임 스페이스를 동시에 사용한다고하더라도, for_each 등은 여전히 ​​같은 기능을 참조 할 것입니다. 별칭은 문제가되지 않습니다. 그런 다음 이름이 for_each을 제공하는 다른 라이브러리와 충돌하면 네임 스페이스의 접두어로 함수의 사용법을 명확히 할 수 있습니다. 그러나 누구도 using 네임 스페이스가 없다면 괜찮습니다.

관련 문제