I am having problems to compile this program using clang
and it seems a parser bug.
clang version 3.2 (trunk)
Target: i686-pc-win32
Thread model: posix
(Thanks Mello for providing a updated build for windows.)
Simplified code:
I am having problems to compile this program using clang
and it seems a parser bug.
clang version 3.2 (trunk)
Target: i686-pc-win32
Thread model: posix
(Thanks Mello for providing a updated build for windows.)
Simplified code:
I am having problems to compile this program using clang
and it seems a parser bug.clang version 3.2 (trunk)
Target: i686-pc-win32
Thread model: posix(Thanks Mello for providing a updated build for windows.)
Simplified code:
----------
#include <type_traits>struct Property {};
struct Property2 : public Property {};template<class T>
struct is_property : public std::is_base_of<Property, T> {};template <class TA, class TB>
auto operator > (const TA& a, const TB& b)
-> typename std::enable_if < is_property<TA>::value ||
is_property<TB>::value,
decltype(eval(a) > eval(b)) >::type
{
return true;
}int main()
{
Property2 a;
Property2 b;
if (a > b)
return 1;
return 0;
}----------
error: expected ')'
decltype(eval(a) > eval(b)) >::type^ points to ">"
-----------
Is it a bug?
Yes, it's a Clang bug. Thanks!
I am new to clang. Where do I report this problem?
Bug reports for Clang and LLVM should go here:
But, don't bother for this bug, because I went ahead and fixed this already in Clang r158111.
The workaround is to change:
decltype(eval(a) > eval(b))
Wrapping eval(a) > eval(b) in another set of parentheses should work, too.
- Doug