В настоящее время я пытаюсь использовать двойной шеврон в строке для «<<«и» >> «для обозначения сдвига битов. Однако моя программа, похоже, не распознает использование двойных шевронов для любого ввода. Если я изменю его на любую другую строку, она будет работать отлично.
дерплефт будет работать, однако<<» не будет работать.
keywords_["derpleft"] = keywords_["<<"] = make<BitShiftLeft>();
keywords_["derpright"] = keywords_[">>"] = make<BitShiftRight>();
dictionary_type keywords_;
typedef std::map<string_type,Token::pointer_type> dictionary_type;
typedef std::string string_type;
Я просто не понимаю это утверждение:
keywords_["derpleft"] = keywords_["<<"] = make<BitShiftLeft>();
Кажется ты хочешь <<
а также derpleft
указать (сохранить) значение, возвращаемое make<BitShiftLeft>
вызов. В таком случае, почему бы не просто так:
keywords_["derpleft"] = make<BitShiftLeft>();
keywords_["<<"] = make<BitShiftLeft>();
Вы можете хранить значение make
вызвать некоторую локальную переменную (auto
предпочтительное ключевое слово).
И самое главное, вы не упомянули, в чем проблема!
Я забыл закрыть эту ветку, но проблема заключалась в том, что я не установил логическое значение true в одной из моих функций редактора. Это была просто логическая ошибка, которую я создал.