Gcov сообщает, что заявление о возвращении не попало

gcov жалуется на один из моих алгоритмов:

File 'Algorithm.h'
Lines executed:95.00% of 20
Algorithm.h:creating 'Algorithm.h.gcov'

17:   25:inline std::vector<std::string> starts_with(const std::vector<std::string>& input, const std::string& startsWith)
-:   26:{
17:   27:    std::vector<std::string> output;
17:   28:    std::remove_copy_if(input.begin(), input.end(), std::back_inserter(output), !boost::bind(&boost::starts_with<std::string,std::string>, _1, startsWith));
#####:   29:    return output;
-:   30:}

Мой тест выглядит так, и он проходит:

TEST (TestAlgorithm, starts_with)
{
std::vector<std::string> input = boost::assign::list_of("1")("2")("22")("33")("222");
EXPECT_TRUE(starts_with(input,"22") == boost::assign::list_of("22")("222"));
}

В чем может быть проблема? Я не использую оптимизацию.

ОБНОВИТЬ:

Мой CMakeList.txt содержит:

if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-O0")        ## Optimize
endif()

1

Решение

Попробуйте использовать -fno-elide-constructors переключиться в g ++

Из окончательного руководства по GCC:

-fno-elide-constructors: эта опция при компиляции опций C ++ заставляет GCC не пропускать создание временных объектов при инициализации объектов
того же типа, что разрешено стандартом C ++. Указание этого
опция заставляет GCC явно вызывать конструктор копирования во всех
случаев.

Некоторые обсуждения здесь:
Как я могу получить более точные результаты от gcov?
и здесь: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12076

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]