コードの繰り返しを簡単に削除する方法を考えています。使用可能か、良いか、アップグレードしようかどうかを理解するのを手伝ってください。
struct NetAdres
{
/*#1*/NetAdres(const std::string &str, uint16_t port); //#1
/*#2*/NetAdres(std::string &&str, uint16_t port) : NetAdres(std::move(str), port) {}; //#2
/*#3*/NetAdres(const char *str, uint16_t port) : NetAdres(std::string(str), port) {}; //#3
}
この呼び出し
NetAdres("192.168.2.3", 80);
私が呼び出しを理解する限り#3
-> #2
-> #1
. そして、この呼び出し
NetAdres(std::string("192.168.2.3"), 80);
#2
-> #1
. そのような実装は余分なコピーを提供しませんstd::string
か?