I heard about 'Perfect Forwarding' recently (from Scott Meyers 'Effective modern c++') like,
Case 1. Not using Perfect Forward
class Widget {
public:
void setName(const std::string& newName) { name = newName; }
void setName(std::string&& newName) { name = std::move(newName); }
...
Case 2. Using Perfect Forward
class Widget {
public:
template<typename T>
void setName(T&& newName) { name = std::forward<T>(newName); }
...
So now, I know lots of advantage of using perfect forwarding. but in case1, user could know parameter type of setName is 'std::string'. however, can't in case 2. so my questions are
- When using perfect forwarding, How user knows real parameter type?
- Do I have to use this pattern despite this disvantage?
thank you. (sorry for my poor english skill)
Aucun commentaire:
Enregistrer un commentaire