[cfe-dev] libc++ std::isfinite() problem

Kal Conley kcconley at gmail.com
Mon Jan 14 08:58:58 PST 2013


Am 1/14/13 5:15 PM, schrieb Howard Hinnant:
> On Jan 14, 2013, at 8:25 AM, Kal Conley <kcconley at gmail.com> wrote:
>
>> Hi,
>> I am getting compile errors trying to compile code which tries to do
>> something equivalent to std::isfinite((int)0). I get:
>>
>> test.cc:27:3: error: no matching function for call to 'isfinite'
>>  std::isfinite((int)0);
>>  ^~~~~~~~~~~~~
>> /usr/bin/../lib/c++/v1/cmath:376:1: note: candidate template ignored:
>> substitution failure [with _A1 = int]
>> isfinite(_A1 __x)
>>
>> This compiles OK on all versions of libstdc++ that I have tried. Is
>> libc++'s implementation correct here? Should it be relying on templates
>> and only allowing specializations that satisfy std::is_floating_point?
> This looks like a libc++ bug to me.  Prior to Oct. 2010 libc++ was correct that std::isfinite should only accept floating point arguments.  But two paragraphs were reordered in N3126 with the result that std::isfinite (and several other functions) should now accept integral arguments as well.  I had not noticed the impact of this paragraph reordering until now.
>
> Howard
>
Which paragraphs do you have in mind?



More information about the cfe-dev mailing list