本文整理汇总了C++中Argument::refType方法的典型用法代码示例。如果您正苦于以下问题:C++ Argument::refType方法的具体用法?C++ Argument::refType怎么用?C++ Argument::refType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Argument
的用法示例。
在下文中一共展示了Argument::refType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
Match
Argument::
isConvertibleTo(const Argument& target) const
{
static const Type* valueType = reflect::type<Value>();
if (*this == target) return Match::Exact;
if ((type() == valueType) ^ (target.type() == valueType))
return Match::Exact;
bool isExact = false;
if (type()->hasConverter(target.type())) {
if (target.refType() != RefType::LValue) return Match::Partial;
return Match::None;
}
if (target.refType() != RefType::Copy) {
if (!testConstConversion(isConst(), target.isConst()))
return Match::None;
}
else isExact = refType() == RefType::RValue;
if (target.refType() == RefType::LValue) {
if (target.isConst()) {}
else if (isConst()) return Match::None;
else if (refType() != RefType::LValue) return Match::None;
}
else if (target.refType() == RefType::RValue) {
if (refType() != RefType::RValue) return Match::None;
}
if (!target.type()->isParentOf(type())) return Match::None;
if (isExact) return Match::Exact;
if (isConst() == target.isConst() && refType() == target.refType())
return Match::Exact;
return Match::Partial;
}