Od std::vector
zawiera initializer-list constructor że bierze std::initializer_list
można użyć jednolitego składni inicjalizacji tak długo, jak funkcja sameTwoVectors
akceptuje wektor według wartości, referencji rvalue lub referencji const
.
namespace Util
{
bool sameTwoVectors(
const std::vector<int>& result,
const std::vector<int>& expected)
{
return result == expected;
}
}
int main()
{
std::vector<int> result;
EXPECT_TRUE(Util::sameTwoVectors(result, {5,2,3,15}));
}
Ewentualnie, jeśli sameTwoVectors
robi tylko prostego porównania można go wyeliminować. Po prostu użyj wyrażenia porównawczego na swoim miejscu, gdy zadzwonisz pod numer EXPECT_TRUE
. Kompromis polega na tym, że musisz wyraźnie określić std::vector<int>
zamiast polegać na niejawnym konstruktorze konwersji. Jest to o kilka znaków mniej i bardziej zrozumiały jest oczekiwany rezultat.
EXPECT_TRUE(result == std::vector<int>({5,2,3,15}));
Szukasz literału wektorowego. Czy odpowiedź [this] (http://stackoverflow.com/questions/758118/c-vector-literals-or-something-like-them) pomaga? –