Relative Content

Tag Archive for c++templatesmetaprogrammingforwarding

How to use a non-template function to achieve perfect forwarding by an argument-wise manner?

template<typename T> class Group; template<typename…U> class Group<std::tuple<U…>> { public: typedef std::tuple<U…> type; void emplace_back(U&…elem) { data_.emplace_back(elem…); } void emplace_back(U&&…elem) { data_.emplace_back(elem…); } private: std::vector<type> data_; }; int main() { Group<std::tuple<int, std::string>> g; int e1 = 10; std::string e2 = “elem2”; g.emplace_back(e1, e2); //OK g.emplace_back(e1, “elem2”); //error, no instance of overloaded function return 0; } I […]