Параметры нетипа C++ должны (функционировать) заказанные шаблоны?

Ничто из этого не помогло мне. Я сделал это:

db.collection.find( {arrayName : {$exists:true}, $where:'this.arrayName.length>1'} )
5
задан Simon Buchan 22 September 2008 в 01:08
поделиться

3 ответа

Вполне уверенный VC ++ имеет "проблемы" здесь. Comeau и g ++ 4.2 оба довольны следующей программой:

struct X
{
    int i;
    void* p;
};

template<int X::*P>
void foo(X* t)
{
    t->*P = 0;
}

template<void* X::*P>
void foo(X* t)
{
    t->*P = 0;
}

int main()
{
    X x;
    foo<&X::i>(&x);
    foo<&X::p>(&x);
}

VC ++ 2008SP1, однако, не имеет ни одного из него.

У меня нет времени для прочтения моего стандарта для обнаружения точно, что то, что..., но я думаю, что VC ++ не прав здесь.

3
ответ дан 15 December 2019 в 06:38
поделиться

Попытайтесь изменить JSObject * на другой тип указателя, чтобы видеть, воспроизводит ли это ошибку. JSObject определяется при использовании? Кроме того, возможно, JSObject* должен быть в parens.

0
ответ дан 15 December 2019 в 06:38
поделиться

Я не, конечно, никакой шаблонный гуру, но недооцениваю это кипение к тонкому случаю попытки дифференцировать перегрузки, базирующиеся просто на типе возврата?

Так как C++ не позволяет перегружаться функций на основе типа возврата, возможно, то же самое применяется к шаблонным параметрам.

0
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: