[cfe-dev] Clang template parse problem?
Thiago Adams
thiago.adams at gmail.com
Wed Jun 6 07:45:58 PDT 2012
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?
I am new to clang. Where do I report this problem?
The workaround is to change:
decltype(eval(a) > eval(b))
to
bool
Full code is :
http://www.thradams.com/codeblog/properties.htm
More information about the cfe-dev
mailing list