형식 및 인쇄 정보를 담당하는 메서드를 작성하고 있습니다.템플릿 형식이 자체 템플릿 형식인지 검색
boost::optional<T>
에 문제/기능이 있습니다. 에 값이있는 경우에만 will print an extra blank space을 스트림으로 출력 할 때 문제가 발생합니다. 두 개의 서로 다른 기능을 사용
- : 인수 유형
boost::optional<T>
과 거래의 경우 감지 할 수있는 명시 적으로boost::optional<T>
- 은 하나의 기능을 사용하여 다루는 일반적인 하나는
나는 두 가지 옵션을 볼 수 있습니다
: 함께 따라
는 옵션 1은 다음과 같이 될 수있다
template <typename T>
void print(const T& o)
{
std::cout << o << "\n";
}
template <typename T>
void print_optional(const boost::optional<T>& o)
{
if (o)
print(*o);
else
print("--");
}
print()
을 boost::optional
으로 지정하면 컴파일 오류가 발생하지 않는다는 문제점이 있습니다. 나는 static_assert
과 std::is_type
, 을 알고 있지만 boost::optional
은 그 자체가 템플릿이되어 있기 때문에 나는 그것을 어떻게 체크 할 지 모릅니다.
옵션 2 나를 위해 이상적인 것, 그러나 문제는 남아 : 어떻게 변수에 관계없이 T의 boost::optional<T>
인지 코드를 물어?
제기 된 질문 : "할 수 없습니다". 유형은 유형입니다. 그러나, 당신은 원하지 않습니다, 당신은 (부분) 전문화를 과부하하고 싶습니다. – sehe