Для использования следующих методов:
// Method 1
void add(const std::string& header, bool replace);
//Method 2
void add(const std::string& name, const std::string& value);
Похоже, что следующий код в конечном итоге вызовет метод 1 вместо метода 2:
something.add("Hello", "World");
Я закончил создание другого метода, который выглядит так:
//Method 3
void MyClass::add(const char* name, const char* value) {
add(std::string(name), std::string(value));
}
Это сработало. Таким образом, казалось бы, когда метод принимает "цитированную строку", он будет соответствовать в следующем порядке:
-
const char*
-
bool
-
std::string
Почему цитированная строка должна рассматриваться как bool
до std::string
? Это обычное поведение? Я написал достойный код для этого проекта и не имел никаких других проблем с выбранной сигнатурой метода...