3

この関数宣言に何か問題がありますか?

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>ます。

関数宣言を「late return」構文で書き直そうとしましたが、違いはありませんでした。

このコードがやろうとしていることを達成する方法はありますか?

4

1 に答える 1

4

microsoft connectのバグ レポートに記入する権利を獲得しました... コードは 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 {}; }
于 2014-02-06T15:42:38.440 に答える