N
Noah Roberts
I am trying to do something like so:
std::tie(x,y) = object;
My initial attempt was something like so:
struct attempt0
{
template < typename ... T >
operator std::tuple<T...> ()
{
return std::tuple<T...>();
}
};
The problem here is that tie returns a tuple of reference types, I
can't just construct and return an empty one. It is assignable from
tuples that have matching non-reference types though so my next naive
attempt was:
struct attempt1
{
template < typename ... T >
operator std::tuple<typename std::remove_reference<T>::type...>()
{
return std::tuple<typename std::remove_reference<T>::type...>();
}
};
This version is of course not recognized though. Third attempt was:
struct attempt2
{
template < typename ... T >
operator std::tuple<T...>()
{
return std::tuple<typename std::remove_reference<T>::type...>();
}
};
I didn't expect this to work and it of course didn't.
Sitting here trying to come up with legal C++ to do what I'm trying
and I can't think of any. Any ideas?
std::tie(x,y) = object;
My initial attempt was something like so:
struct attempt0
{
template < typename ... T >
operator std::tuple<T...> ()
{
return std::tuple<T...>();
}
};
The problem here is that tie returns a tuple of reference types, I
can't just construct and return an empty one. It is assignable from
tuples that have matching non-reference types though so my next naive
attempt was:
struct attempt1
{
template < typename ... T >
operator std::tuple<typename std::remove_reference<T>::type...>()
{
return std::tuple<typename std::remove_reference<T>::type...>();
}
};
This version is of course not recognized though. Third attempt was:
struct attempt2
{
template < typename ... T >
operator std::tuple<T...>()
{
return std::tuple<typename std::remove_reference<T>::type...>();
}
};
I didn't expect this to work and it of course didn't.
Sitting here trying to come up with legal C++ to do what I'm trying
and I can't think of any. Any ideas?