FunctionDecl::StorageClass& SC) {
// C++ [class.conv.fct]p1:
// Neither parameter types nor return type can be specified. The
- // type of a conversion function (8.3.5) is “function taking no
- // parameter returning conversion-type-id.”
+ // type of a conversion function (8.3.5) is "function taking no
+ // parameter returning conversion-type-id."
if (SC == FunctionDecl::Static) {
if (!D.isInvalidType())
Diag(D.getIdentifierLoc(), diag::err_conv_function_not_member)
// unqualified name lookup (3.4.1), the names appear as if they
// were declared in the nearest enclosing namespace which
// contains both the using-directive and the nominated
- // namespace. [Note: in this context, “contains” means “contains
- // directly or indirectly”. ]
+ // namespace. [Note: in this context, "contains" means "contains
+ // directly or indirectly". ]
// Find enclosing context containing both using-directive and
// nominated namespace.
QualType UnqualT2 = T2.getUnqualifiedType();
// C++ [dcl.init.ref]p4:
- // Given types “cv1 T1” and “cv2 T2,” “cv1 T1” is
- // reference-related to “cv2 T2” if T1 is the same type as T2, or
+ // Given types "cv1 T1" and "cv2 T2," "cv1 T1" is
+ // reference-related to "cv2 T2" if T1 is the same type as T2, or
// T1 is a base class of T2.
if (UnqualT1 == UnqualT2)
DerivedToBase = false;
// least).
// C++ [dcl.init.ref]p4:
- // "cv1 T1” is reference-compatible with “cv2 T2” if T1 is
+ // "cv1 T1" is reference-compatible with "cv2 T2" if T1 is
// reference-related to T2 and cv1 is the same cv-qualification
// as, or greater cv-qualification than, cv2. For purposes of
// overload resolution, cases for which cv1 is greater
ICS->ConversionKind = ImplicitConversionSequence::BadConversion;
// C++ [dcl.init.ref]p5:
- // A reference to type “cv1 T1” is initialized by an expression
- // of type “cv2 T2” as follows:
+ // A reference to type "cv1 T1" is initialized by an expression
+ // of type "cv2 T2" as follows:
// -- If the initializer expression
}
bool BindsDirectly = false;
- // -- is an lvalue (but is not a bit-field), and “cv1 T1” is
- // reference-compatible with “cv2 T2,” or
+ // -- is an lvalue (but is not a bit-field), and "cv1 T1" is
+ // reference-compatible with "cv2 T2," or
//
// Note that the bit-field check is skipped if we are just computing
// the implicit conversion sequence (C++ [over.best.ics]p2).
}
// -- has a class type (i.e., T2 is a class type) and can be
- // implicitly converted to an lvalue of type “cv3 T3,”
- // where “cv1 T1” is reference-compatible with “cv3 T3”
+ // implicitly converted to an lvalue of type "cv3 T3,"
+ // where "cv1 T1" is reference-compatible with "cv3 T3"
// 92) (this conversion is selected by enumerating the
// applicable conversion functions (13.3.1.6) and choosing
// the best one through overload resolution (13.3)),
}
// -- If the initializer expression is an rvalue, with T2 a
- // class type, and “cv1 T1” is reference-compatible with
- // “cv2 T2,” the reference is bound in one of the
+ // class type, and "cv1 T1" is reference-compatible with
+ // "cv2 T2," the reference is bound in one of the
// following ways (the choice is implementation-defined):
//
// -- The reference is bound to the object represented by
// the rvalue (see 3.10) or to a sub-object within that
// object.
//
- // -- A temporary of type “cv1 T2” [sic] is created, and
+ // -- A temporary of type "cv1 T2" [sic] is created, and
// a constructor is called to copy the entire rvalue
// object into the temporary. The reference is bound to
// the temporary or to a sub-object within the
return false;
}
- // -- Otherwise, a temporary of type “cv1 T1” is created and
+ // -- Otherwise, a temporary of type "cv1 T1" is created and
// initialized from the initializer expression using the
// rules for a non-reference copy initialization (8.5). The
// reference is then bound to the temporary. If T1 is
// ...During unqualified name lookup (3.4.1), the names appear as if
// they were declared in the nearest enclosing namespace which contains
// both the using-directive and the nominated namespace.
- // [Note: in this context, “contains” means “contains directly or
- // indirectly”.
+ // [Note: in this context, "contains" means "contains directly or
+ // indirectly".
//
// For example:
// namespace A { int i; }
// unqualified function calls (3.4.2) except that all member
// functions are ignored. However, if no operand has a class
// type, only those non-member functions in the lookup set
- // that have a first parameter of type T1 or “reference to
- // (possibly cv-qualified) T1”, when T1 is an enumeration
+ // that have a first parameter of type T1 or "reference to
+ // (possibly cv-qualified) T1", when T1 is an enumeration
// type, or (if there is a right operand) a second parameter
- // of type T2 or “reference to (possibly cv-qualified) T2”,
+ // of type T2 or "reference to (possibly cv-qualified) T2",
// when T2 is an enumeration type, are candidate functions.
DeclarationName OpName = Context.DeclarationNames.getCXXOperatorName(Op);
LookupResult Operators = LookupName(S, OpName, LookupOperatorName);