【发布时间】:2022-01-11 18:25:15
【问题描述】:
我有 std::string 的这些 typedef 和一个函数
using FirstName = std::string;
using SecondName = std::string;
void DoSmth(const FirstName& f, const SecondName& s)
{
/* some mixture of f.empty(), s.size(), f.substr() and other useful std::string member functions*/
}
如何教编译器在下一次DoSmth 调用中警告我:
void CallDoSmth()
{
FirstName f = "Sher";
SecondName s = "Andrei";
DoSmth(s, f);
}
Here 是一种带有标签的实现。 另一种解决方案是:
struct FirstName {
std::string value;
explicit FirstName(std::string str) : value(std::move(str)) {}
};
在这两种解决方案中,调用std::string 的成员函数都会产生开销。有没有办法让CallDoSmth() 出错,但不要更改DoSmth() 中的任何内容?
【问题讨论】: