I am revoking this old question but I would like to know if protobuf can 
handle class templates?

Suppose I have a simple class
template<typename T>
struct Data {
    T data;
};

and know that T can only take on float and double. Is there a way to avoid 
writing two proto files?




On Wednesday, January 21, 2015 at 9:28:53 AM UTC-8, Stephen Tu wrote:
>
> This is not really a protobuf question, moreso a C++ question. But 
> anyways, the typical way to do this is:
>
> template <typename T> struct MatrixTraits { };
> template <> struct MatrixTraits<double> { typedef DoubleMatrix type; };
> template <> struct MatrixTraits<float>    { typedef FloatMatrix type; };
>
> template <typename DType> class Matrix { 
>     typename MatrixTraits<DType>::type mat_data_;
> };
>
> On Mon, Jan 19, 2015 at 5:41 PM, Ji Wan <[email protected] <javascript:>> 
> wrote:
>
>> Suppose I have two message types `DoubleMatrix` and `FloatMatrix`, and a 
>> template class `Matrix`:
>>
>>
>> message DoubleMatrix {
>>   required uint32 rows = 1;
>>   required uint32 cols = 2;
>>   repeated double data = 3 [packed=true];
>> }
>>
>>
>> message FloatMatrix {
>>   required uint32 rows = 1;
>>   required uint32 cols = 2;
>>   repeated float data = 3 [packed=true];
>> }
>>
>>
>> template<typename DType>
>> class Matrix {
>>     MSTType mat_data_;
>> };
>>
>>
>>
>> Is it possible to make `MSTType` as `FloatMatrix` if `DType` is `float`, as 
>> `DoubleMatrix` if `DType` is `double`?
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/056beefe-b2e1-4c79-8c44-b7027191eded%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to