зависимые типы с вариационными шаблонами

Можете ли вы увидеть что-то не так с этим объявлением функции?

template<typename... Containers>
std::tuple<typename Containers::value_type...>
foo(const Containers &...args);

Когда я пытаюсь это назвать, вот так:

foo(std::list<int>(), std::vector<float>());

MSVC2013 говорит error C2027: use of undefined type 'std::tuple<Containers::value_type>,

Я попытался переписать объявление функции с синтаксисом «позднего возврата», и это не имело никакого значения.

Есть ли способ, которым я могу добиться того, что этот код пытается сделать?

3

Решение

Вы получили право заполнить отчет об ошибке в Microsoft соединять… Код в порядке на Clang и GCC.

Обходной путь на VS2013 и, возможно, gcc 4.7:

template <typename T>
using ValueType = typename T::value_type;

template<typename... Containers>
std::tuple<ValueType<Containers>...>
foo( const Containers &...args ) { return {}; }
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]