I'll look at this today.

On Wed, Feb 11, 2009 at 5:42 AM, Amanda Walker <[email protected]> wrote:
>
> At first glance, how does CallbackType* become a const CallbackType& ?
>  This may be one of many cases where VC++ plays a little loose with
> C++ type rules...
>
> At least, that's how I read the error message.
>
> --Amanda
>
>
> On Tue, Feb 10, 2009 at 6:26 PM, James Hawkins <[email protected]> wrote:
>> Hi,
>>
>> I was porting session_services.cc to posix today, and I ran across a
>> g++ bug that will definitely block efforts to use CancelableRequest,
>> at least on Linux.  While I'm savvy enough with C++, I'm having
>> trouble coming up with an explanation for what the problem is here.
>> I'd like to file a bug with gcc, but I don't want to just toss this
>> file on their laps.  Can someone take a look at the test case I've
>> attached and see if they can shed some light?  btw this test case
>> compiles successfully in visual studio.
>>
>> $ g++ testcase.cc
>> testcase.cc: In constructor
>> 'InternalGetCommandsRequest::InternalGetCommandsRequest(CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> >*)':
>> testcase.cc:89: error: class 'InternalGetCommandsRequest' does not
>> have any field named 'CancelableRequest'
>> testcase.cc:89: error: no matching function for call to
>> 'CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >::CancelableRequest()'
>> testcase.cc:21: note: candidates are:
>> CancelableRequest<CB>::CancelableRequest(CB*) [with CB =
>> CallbackRunner<Tuple2<int, InternalGetCommandsRequest> >]
>> testcase.cc:13: note:
>> CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >::CancelableRequest(const
>> CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >&)
>>
>> It seems that the critical point is:
>>
>> no matching function for call to
>> 'CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >::CancelableRequest()'
>>
>> when the code in question is:
>>
>> explicit InternalGetCommandsRequest(CallbackType* callback) :
>> CancelableRequest(callback) { }
>>
>> For some reason, g++ is not picking up that we are passing a var of
>> type CallbackType* which fully translates to:
>>
>> const CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >&
>>
>> which would match the expected:
>>
>> CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >::CancelableRequest(const
>> CancelableRequest<CallbackRunner<Tuple2<int,
>> InternalGetCommandsRequest> > >&)
>>
>>
>> Thanks,
>> James Hawkins
>>
>> >
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to