Yes, explicitly creating std::string fixes the problem. This is not needed for 
newer gcc versions(>=6). 

Thanks a lot Ben and Omer.

> On 12-Sep-2019, at 10:57 PM, Omer F. Ozarslan <o...@utdallas.edu> wrote:
> 
> I'm looking into it. Will submit PR today.
> 
> On Thu, Sep 12, 2019 at 11:32 AM Ben Kietzman <ben.kietz...@rstudio.com> 
> wrote:
>> 
>> It looks like a tuple constructor is choking on implicit conversion from 
>> string literal (char[6]) to boost::optional<std::string>:
>> https://travis-ci.org/ursa-labs/crossbow/builds/582833123#L1161
>> 
>> That constructor in the 4.8.2 release of GCC requires that parameters be 
>> *convertible* to the corresponding element type (and not just that the 
>> element be constructible from the parameter)
>> https://github.com/gcc-mirror/gcc/blob/gcc-4_8_2-release/libstdc++-v3/include/std/tuple#L400-L405
>> 
>> Locally,
>>  // static_assert(std::is_convertible<char const[5], 
>> boost::optional<std::string>>::value, "FAILS");
>>  static_assert(std::is_convertible<std::string, 
>> boost::optional<std::string>>::value, "fine");
>> So I think this can be resolved by wrapping string literal arguments to 
>> tuple constructors with std::string to ensure they are convertible.
>> 
>> I'll create a JIRA
>> 
>> On Thu, Sep 12, 2019 at 8:09 AM Prudhvi Porandla <prud...@dremio.com> wrote:
>>> 
>>> Hi,
>>> 
>>> Gandiva trusty 
>>> job(https://travis-ci.org/ursa-labs/crossbow/builds/582833123) is failing 
>>> with this commit (ARROW-6326: [C++] Nullable fields when converting 
>>> std::tuple to Table  
>>> <https://github.com/apache/arrow/commit/d6bc0b6f5975304367000e3090e09d4cf8af1fb9>).
>>> The compilation is successful if the optional string column is removed from 
>>> boost_optional_types_tuple(see line 36 of cpp/src/arrow/stl_test.cc).
>>> 
>>> Could someone help me understand this error?
>>> 
>>> 
>>> Thanks,
>>> Prudhvi
>>> 
>>> 

Reply via email to