Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaCXX/overload-template.cpp @ 222:81f6424ef0e3 llvm-original
LLVM original branch
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:10:01 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -fsyntax-only -verify %s enum copy_traits { movable = 1 }; template <int> struct optional_ctor_base {}; template <typename T> struct ctor_copy_traits { // this would produce a c++98-compat warning, which would erroneously get the // no-matching-function-call error's notes attached to it (or suppress those // notes if this diagnostic was suppressed, as it is in this case) static constexpr int traits = copy_traits::movable; }; template <typename T> struct optional : optional_ctor_base<ctor_copy_traits<T>::traits> { template <typename U> constexpr optional(U&& v); }; struct A {}; struct XA { XA(const A&); }; struct B {}; struct XB { XB(const B&); XB(const optional<B>&); }; struct YB : XB { using XB::XB; }; void InsertRow(const XA&, const YB&); // expected-note {{candidate function not viable: no known conversion from 'int' to 'const XA' for 1st argument}} void ReproducesBugSimply() { InsertRow(3, B{}); // expected-error {{no matching function for call to 'InsertRow'}} }