"don't do that"
- строковый литерал, тип которого - const char[14]
.Как таковой он может только уменьшиться до const char*
, а не char*
, как вы ожидаете.
Таким образом, изменение вашего теста на EXPECT_THROW(Foo(0,0), const char*);
должно сделать его успешным.
В качестве отступления, я бы не стал исключать в этом случае.ИМО было бы лучше просто вернуть std::optional
(или boost::optional
, если C ++ 17 недоступен).Получение неправильных входных данных - это не то, что я считаю достаточно исключительным, чтобы оправдать исключение.
И если бы мне пришлось выбросить исключение, то создание стандартного типа исключения загружается лучше строкового литерала.В этом случае std::domain_error
представляется целесообразным.