I think that, if the parameter pack etl::forward<T>(t)... expands to exactly two elements, it treats { etl::forward<T>(t)... } as the initializer for a pair type, and then tries to call etl::pair<const char *, int>() passing each of the two pairs as the two constructor arguments. Unfortunately, I don't really understand why it's doing this or how to fix it. Hopefully you have some insight!
I noticed something odd today when trying to use etl::make_vector. This works:
but this doesn't
(even though it's just commenting out one of the entries).
The compile error looks like:
I think it has something to do with how etl::make_vector is defined:
I think that, if the parameter pack
etl::forward<T>(t)...
expands to exactly two elements, it treats{ etl::forward<T>(t)... }
as the initializer for a pair type, and then tries to calletl::pair<const char *, int>()
passing each of the two pairs as the two constructor arguments. Unfortunately, I don't really understand why it's doing this or how to fix it. Hopefully you have some insight!