다음과 같은 접근 방식이 있습니까? 내가하지만, 완전히 다른 이유 :특수 기능 템플릿 구문
이답변
예, 거기에 대한 내 자신의 문자열 유형에 대한 스왑을 전문으로하는 시도 swap<::string>
이 작동하지 않는 것으로 나타났습니다 때
// approach 1
namespace std
{
template<>
void swap<Foo>(Foo& x, Foo& y) // note the <Foo>
{
x.swap(y);
}
}
// approach 2
namespace std
{
template<>
void swap(Foo& x, Foo& y)
{
x.swap(y);
}
}
나는이에 stumpled. 그러나 그 특별한 예에서는 아닙니다. 매개 변수가 도출되지 않으면, 당신은
<type>
없이이
T
매개 변수 목록에서 무엇을 추론 할 수 없기 때문에 것을 전문으로 할 수없는 차이
template<typename T> void f(typename T::type t);
을 만들 수 있습니다. 귀하의 경우 물론
struct MyType { typedef int type; };
// needs <MyType>
template<> void f<MyType>(int t) { }
, 그것은 당신의 문제를 일으키는 [
같은 의미 년대 소리를 나타내는 두 글자 <:
입니다. 이 문제를 방지하려면 <
::string>
과 같은 공백을 넣으십시오.
+1 설명 주셔서 감사합니다! 그리고이 digraph 물건은 너무 재밌다 :) – fredoverflow
실제로 그 문법이 표준에서 허용되는 것을 알 수 있습니까? 나는 그것을 지금 보지 못한다. –
@ ff는 'f <..>'구문을 의미합니까? template-id는 id-expression으로 선언자 ID입니다. –
또한이 경우 전문화 할 필요가 없으며 과부하가 걸리고 행복 할 것입니다.
namespace std
{
void swap(Foo& x, Foo& y)
{
x.swap(y);
}
}
당신이 정의되지 않은 동작을 좋아한다면, 그렇습니다 :) 당신은'std' 네임 스페이스에서 오버로드를 할 수 없습니다. – fredoverflow
- 1. 하위 클래스에서 템플릿 기능 (특수)을 어떻게 오버로드합니까?
- 2. 특수 템플릿 클래스 함수에서 특수 템플릿 클래스 함수 호출
- 3. C++ 템플릿 클래스와 템플릿 기능
- 4. C# 템플릿 및 특수 생성자
- 5. 블록이 아닌 특수 템플릿 C++
- 6. dll에서 특수 템플릿 함수 내보내기
- 7. GCC의 ICE는 - 대체 기능 구문 가변 템플릿 튜플은
- 8. 회원 기능 템플릿 오류
- 9. GCC에서 템플릿 기능
- 10. 친구 기능 및 템플릿
- 11. 기능 템플릿 특수화는
- 12. 템플릿 정의의 친구 기능
- 13. django 템플릿 호출 기능
- 14. Lucene.net에 특수 문자가있는 정확한 구문
- 15. C++ 템플릿 구문 오류
- 16. 템플릿 구문 도움말
- 17. C++의 템플릿 구문
- 18. 유니버설 템플릿/구성 구문
- 19. Jinja 템플릿 구문 하이라이팅
- 20. 템플릿 및 구문
- 21. 복잡한 C++ 템플릿 구문
- 22. 기본 템플릿 템플릿 매개 변수 구문
- 23. C++ 부분 템플릿 특수화 구문 기본 템플릿
- 24. 템플릿 기능 오류 (Boost.Tuples 사용)
- 25. 템플릿 매개 변수와 같은 기능
- 26. 템플릿 공제 및 기능 포인터
- 27. 템플릿 인스턴스화 기능 로컬 클래스
- 28. 특수 템플릿 인스턴스화를 방지하는 방법은 무엇입니까?
- 29. 템플릿 템플릿 매개 변수를 사용하는 템플릿 생성자에 대한 올바른 구문
- 30. 닉네임에 특수 문자가 표시되지 않도록하는 기능
':: :: 문자열'이름은 어떤 유형입니까? – Potatoswatter
내 이름 공간에 내 장난감 문자열 유형이 있습니다. – fredoverflow