Cześć,
Czy może mi ktoś podpowiedzieć gdzie robię błąd? Chcę mieć coś takiego
std::shared_ptr<int> sp( new char[10], std::default_delete<char[]>( ) );
Ale kompilator tego nie łyka. Próbowałem też tak
std::shared_ptr<char> sp( new char[10], []( char *p ) { delete[] p; } );
i tak
template< typename T >
struct array_deleter
{
void operator ()( T const * p )
{
delete[] p;
}
};
std::shared_ptr<char> sp( new char[10], array_deleter<char>( ) );
W każdym przypadku dostaję w twarz takim błędem
error C2064: term does not evaluate to a function taking 2 arguments
1> class does not define an 'operator()' or a user defined conversion operator to a pointer-to-function or reference-to-function that takes appropriate number of arguments
nie wiem czemu. Przecież w każdym przypadku jest operator() przyjmujący wskaźnik na char.
Z góry dzięki za pomoc (: