Get_new_data_sink_function_type is not a function type, but the type of a pointer to a function boost::function requires a function type (or signature) In addition, an abstract class need not be an incomplete type (and it's not at the site of your typedef ). The 'incomplete type' part of the warning likely stems from the fact that boost::function is possibly written like this: template class function; // Not defined! Template class function { // ... }; // Various other specializations which means that when boost::function is instantiated with a non-function type, as in your case, no specialization matches and the base template is selected.
Since it is not defined, it is an incomplete type The simplest fix you can do is make your typedef a real function type, which would make its name not misleading anymore: typedef std::auto_ptr get_new_data_sink_function_type(std::string) Notice that with this get_new_data_sink_function_type is the same pointer to function type as it was previously.
Get_new_data_sink_function_type is not a function type, but the type of a pointer to a function. Boost::function requires a function type (or signature). In addition, an abstract class need not be an incomplete type (and it's not at the site of your typedef).
The 'incomplete type' part of the warning likely stems from the fact that boost::function is possibly written like this: template class function; // Not defined! Template class function { // ... }; // Various other specializations which means that when boost::function is instantiated with a non-function type, as in your case, no specialization matches and the base template is selected. Since it is not defined, it is an incomplete type.
The simplest fix you can do is make your typedef a real function type, which would make its name not misleading anymore: typedef std::auto_ptr get_new_data_sink_function_type(std::string); Notice that with this, get_new_data_sink_function_type* is the same pointer to function type as it was previously.
Ah, that makes sense. I was actually unaware you could typedef a function signature like that; I thought you were limited to function pointers only. I further confused myself by thinking this would be OK since boost::function objects can be assigned to regular function pointers that have compatible signatures... why I thought this would imply that the template arguments could be similarly substituted I can only blame on temporary insanity... – Ryan Talbot Jun 8 at 23:13.
Get_new_data_sink_function_type is not a function type, but the type of a pointer to a function. Boost::function requires a function type (or signature). In addition, an abstract class need not be an incomplete type (and it's not at the site of your typedef).
Which means that when boost::function is instantiated with a non-function type, as in your case, no specialization matches and the base template is selected. Since it is not defined, it is an incomplete type. Notice that with this, get_new_data_sink_function_type* is the same pointer to function type as it was previously.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.