повышение духа V2 ци ошибка, связанная с уровнем оптимизации

Я разрабатываю свой код в свободное время. Желательно в режиме отладки. Недавно, когда я пытался собрать релизную версию, я получил ошибку (время выполнения, вывод:1\n2\n тогда ж, болезнь). Я нашел фрагмент кода (ниже), который содержит ошибку, и обнаружил, что ошибка возникает только тогда, когда уровень оптимизации-Os, -Ofast, -O2, -O3 но нет-O, -O0, -O1, -Og, В режиме релиза я ограничен в способностях отладки. В чем причина ошибки? Какой способ найти такие ошибки?

#! / usr / bin / env bash -vex WARN = "- W -Wall -Wextra" INCLUDE = "- isystem / c / libs / boost-trunk" OPT = "- O2" g ++ -x c ++ - -std = gnu ++ 1y $ ВКЛЮЧИТЬ

$ WARN $ OPT -o a << __ EOF && ./a && echo -e "\ e [1; 32mscuceeded \ e [0m" || echo -e "\ e [1; 31mfailed \ e [0m"

#include <iterator>
#include <string>
#include <iostream>

#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/support_multi_pass.hpp>

using namespace boost::spirit;

template< typename Iterator >
struct skipper
        : qi::grammar< Iterator >
{

    skipper();

private :

    typename skipper::base_type::start_type skipper_;

};

template< typename Iterator >
skipper< Iterator >::skipper()
    : skipper::base_type(skipper_, "skipper") 
{
    std::cerr << 1 << std::endl;
    auto const ana =
            *~qi::char_('*') > +qi::char_('*')
            ;
    std::cerr << 2 << std::endl;
    skipper_ =
            qi::space
            | ("/*" > ana > *(~qi::char_("/*") > ana) > '/')
            | ("//" > *(qi::char_ - qi::eol) > (qi::eol | qi::eoi))
            ; // R"(\s+|(\/\*[^*]*\*+([^/*][^*]*\*+)*\/)|(\/\/[^\r\n]*))"
    std::cerr << 3 << std::endl;
}

using input_type = std::string;
using input_iterator_type = std::istreambuf_iterator< typename input_type::value_type >;
using base_iterator_type = multi_pass< input_iterator_type >;

template struct skipper< base_iterator_type >;

using skipper_type = skipper< base_iterator_type >;

int main()
{
    skipper_type const skipper_;
    std::cerr << 4 << std::endl;
    return EXIT_SUCCESS;
}
__EOF

gcc -v 2>&1 | tail -n1:

gcc version 4.8.1 (rev5, Built by MinGW-W64 project) 

Ответы на вопрос(1)

Ваш ответ на вопрос