Std::tuple нет подходящего конструктора по умолчанию
Привет,
Если я попытаюсь скомпилировать приведенный ниже пример, то получу ошибку
'
std::tuple<long &,int>::tuple
': соответствующий конструктор по умолчанию недоступен Как я могу заставить этот пример работать, чтобы заставить кортеж принимать смешанные значения lvalue ref и rValue?
#include "stdafx.h" #include <tuple> template<class ...Arg> class A { std::tuple<Arg...> tuple_; public: A(Arg&&...args) { tuple_ = std::make_tuple(std::forward<Arg>(args)...); } }; template<class...Arg> void f(Arg&&...args) { A<Arg...> a(std::forward<Arg>(args)...); } int main() { long t = 5; f(t,5); return 0; }
Что я уже пробовал:
Я попробовал использовать
std::make_tuple
, std::forward_as_tuple
или std::tie
, но ничто не заставляет пример компилироваться без ошибок.