无法推断const auto&

时间:2017-03-19 17:13:11

标签: c++ auto

我有以下代码行,效果很好:

const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content;

现在我想介绍一个“if-then”子句,但是编译器告诉我“不能推断'auto'类型(需要使用initalizer):

const auto& dict;

if (uSkipAbbreviationsAndEnglish)
{
    dict = m_DictionaryNoAbbreviationsNoEnglish.Content();
}
else
{
    dict = m_DictionaryAbbreviationsAndEnglish.Content();
}

然而,当我像这样初始化它时......

const auto& dict=NULL;

...,我无法使用此类代码分配“dict”:

dict = m_DictionaryNoAbbreviationsNoEnglish.Content();

错误是“表达式必须是可修改的lValue。”

有人可以告诉我如何正确地做到这一点吗?

谢谢。

ps:内容是这样的:

map<wstring,wstring> &clsTranslations::Content()
{
    return m_content;
}

1 个答案:

答案 0 :(得分:6)

这就是条件运算符的用途:

const auto& dict = uSkipAbbreviationsAndEnglish ? 
                   m_DictionaryNoAbbreviationsNoEnglish.Content() : 
                   m_DictionaryAbbreviationsAndEnglish.Content();