So, the cpprefernce page on template type deduction seemingly suggests you
can: http://en.cppreference.com/w/cpp/language/template_argument_deduction

On Thu, May 19, 2016, 6:09 PM Feng Xiao <[email protected]> wrote:

>
>
> On Thu, May 19, 2016 at 10:31 AM, Alex Shaver <[email protected]>
> wrote:
>
>> Suppose I have a message:
>> message Foo{
>>   oneof b_message {
>>     Bar = 16;
>>     Baz = 17;
>>   }
>> }
>>
>> and I have some C++ handler that is a templated function:
>> template<class T>
>> void b_handler(const T&);
>> template void b_handler(const Bar& bar){...}
>> template void b_handler(const Baz& baz){...}
>>
>> What I'd like to be able to do is:
>> void foo_handler(const Foo& foo){
>>   ...
>>   b_handler(foo.b_message());
>> }
>>
>> Essentially, if protoc generated some kind of function like
>> template<class T>
>> const T& Foo::b_message() const;
>> const Bar& Foo::b_message() const;
>> const Baz& Foo::b_message() const;
>>
>> that would make for automatic handling of whatever kind of b_message Foo
>> had carried, rather than doing a switch(foo.b_message_case()) type decision
>> tree.
>>
> It's pretty easy to write a protoc plugin to generate additional code.
> What I don't understand though is how can you have two methods with the
> same signature return different types? Is that supported by C++?
>
>
>>
>> I'm sure there are a lot of edge cases that I'm not thinking of, or
>> cross-language considerations, but is anything like this possible?
>>
> --
>> You received this message because you are subscribed to the Google Groups
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to