일반 함수에 functor를 만들고 싶지만 컴파일러 오류가 발생합니다.가변 인자 템플릿 함수 Functor to
template <class T>
struct Creator
{
template <typename...Ts>
static std::shared_ptr<T> create(Ts&&... vs)
{
std::shared_ptr<T> t(new T(std::forward<Ts>(vs)...));
return t;
}
};
class Car:
public Creator<Car>
{
private:
friend class Creator<Car>;
Car()
{
}
};
int main()
{
auto car=Car::create();
std::function< std::shared_ptr<Car>() > createFn=&Car::create;
return 0;
}
나는 두 번째 문에 GCC 4.6.3에서 다음 오류 (첫 번째는 OK입니다) : 모든 힌트 감사
error: conversion from ‘<unresolved overloaded function type>’
to non-scalar type ‘std::function<std::shared_ptr<Car>()>’ requested
다음은 코드입니다.
@NicolBolas을 : 고정 감사합니다. –
'std :: make_shared'를 복제하려고하고있는 것 같습니다. 그게 맞습니까? –
@ TamásSzelei : 이것은 실제 응용 프로그램에서 나온 예입니다. 이 코드는 제공되는 키를 기반으로 기본 유형의 스마트 포인터를 반환하는 객체 팩토리의 일부입니다. 아래의 대답은 제가보고 싶었던 것입니다. –