Loki::Tuple and g++

F

fabioppp

I'm using g++, a quite new version.
Why does this code not compile?

#include "HierarchyGenerators.h"
using namespace Loki;
int main()
{
Tuple<TYPELIST_2(int,int)> tuple;
Field<0>(tuple) = 4;
};
 
F

fabioppp

I'm using g++, a quite new version.
Why does this code not compile?

#include "HierarchyGenerators.h"
using namespace Loki;
int main()
{
Tuple<TYPELIST_2(int,int)> tuple;
Field<0>(tuple) = 4;
};

I think that GenScatterHierarchy has a bug when two or more equal types
exist in the Typelist.
The hierarchy generated is ambiguous (g++ emit a warning).

The implementation of Field<0>(tuple) uses this funcion:

template <class H, typename R, int i>
inline R& FieldHelper(H& obj, Type2Type<R> tt, Int2Type<i>)
{
typename H::RightBase& subobj = obj;
return FieldHelper(subobj, tt, Int2Type<i- 1>());
}

The upcast from obj to subobj is ambiguous, because
H::RightBase is convertible to H::LeftBase.
In such a way the compiler doesn't know where to go.
Left or Right?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top