2
템플릿 매개 변수에 스마트 포인터 :C++ 내가 템플릿 매개 변수로이 쓰기 위해 노력하고 있어요
template <class T>
struct FooStruct {
template <void F(std::unique_ptr<T> Object)>
void FooMethod()
{
//....
}
};
그런 다음 오류가 온다 최대 :이 방법은 잘 작동
error C2993: 'std::unique_ptr<T>' : illegal type for non-type template parameter 'Object'
:
template <class T>
struct FooStruct {
template <class UT,void F(UT Object)>
void FooMethod()
{
//....
}
};
UT
매개 변수의 std::unique_ptr<Person>
을 FooMethod()
에 전달하면 것은 잘 작동합니다.
스마트 포인터를 템플릿 매개 변수로 전달하는 특별한 방법이 있습니까?
Object
문제를 일으키는,이 작업을 듯 파악
당신이'을 포함나요 :
다음난 그냥과 같이 함수에 식별을 추가했다 'FooStruct'의 정의 이전에? – dyp
나는 대답은 'template)>'라고합시다. [temp.param]/8에 따라'template )>'로 쇠퇴하고 * 함수에 대한 * 포인터는 비 형식 템플릿 매개 변수의 유형으로 허용됩니다 [temp.param]/4. 컴파일러 버그가 생겼을 수도 있습니다. –
dyp