저는 템플릿이 아닌 클래스에서 템플릿 메서드를 전문화하려고합니다. 메서드의 반환 형식에 템플릿 기반 형식이 포함되어 있습니다.이 메서드는 인수를 사용하지 않습니다. 나는 주위를 돌아 다니고 시행 착오를 거치지 않고 컴파일하는 일을 아무 소용이 없도록하려고 노력했다. 이 코드를 빌드하려면 어떻게해야합니까? 그러한 구문은 가능한가? (아래 코멘트에 표시된대로
중첩 전문 : template<typename FirstParam>
struct First
{
template<typename SecondParam>
struct Second;
};
예 전문화 :이 두 클래스가 동시에 전문으로하는 경우가 template<typename T> class D {};
template<>
templ
데이터 구조로 사용하는 클래스가 있지만 클래스가 포인터를 저장하는 경우 클래스의 함수 중 하나가 다르게 동작해야합니다. 내가 원하는 것은 [] 연산자가 호출 될 때 객체에 대한 참조를 반환하기를 원하는 포인터를 반환하는 것이 아닙니다. 이 내가이 같은이 또는 무언가를 추가 할 template <typename T>
class CollectionTempla
클래스 템플릿 A는 다음과 같습니다. A를 속하는 문제를 해결하기 위해 추상 데이터 유형 B와 C의 구현을 정의 인수로 TImpl1 및 TImpl2을 고려 template <typename TImpl1, typename TImpl2, typename TImpl3>
A<B<TImpl1, TImpl2>, C<TImpl3> >
나는 또한 가지고 인스턴스를
을 금지하고 있습니다. template<>
struct variant<>;
그러나 그것은 너무 분명하지 않다 : 나는 다음과 같은 작업을 수행 할 수 내 변형 라이브러리 헤더의 많이 포함 된 경우의 앞으로 선언하지 전문화 이상 여부, 다음이 아니라 분명하다 클래스, 아래 어딘가에 정의. 내 마음에, 이상적인 가상 솔루션은 다음과 같습니다는 templa
에 대한 기본 IMPL를 사용하여, 단지 몇 가지 방법을 전문 행동 양식. 이게 뭔가 ... // Specialize Write() behavior for <bool> ...
// This won't work. Mything<bool> no longer has a Flush() method!
template <>
class MyThing<bool> {
나는 다음 클래스를 가지고 기능이 shared_ptr<T> Foo foo;
foo.bar<shared_ptr<int>>();
foo.bar<shared_ptr<long>>();
으로 그러나 물론 호출 될 때 경우에 나는 전체 스펙을 작성하지 않으 각 유형에 대한 초기화. 그러한 행동을 구현할 수 있습니까? (필요한 경우 형질 기반이 될 수 있습니까?
나는 void f<int N>()의 기능을 가지고 있습니다. f은 템플릿 매개 변수 1과 2에서만 호출됩니다. f<1>() 및 f<2>()과 나는이 두 매개 변수에 대해 f을 효율적으로 전문화했습니다. f은 다른 매개 변수와 함께 호출되지 않습니다. 그러나 어쨌든 N 인 f을 "선명도"로 정의했습니다. 질문 : 컴파일러가 f<N>()의 사용하지 않는 정의를