Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/concepts/dr1430.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line source
// PR c++/66092 // { dg-do compile { target c++17 } } // { dg-options "-fconcepts" } #include <type_traits> template <typename T, typename U, typename... Args> requires (sizeof...(Args) == 0) constexpr decltype(auto) check() { return std::integral_constant<bool, __is_same_as(T, U)>(); } template <typename T, typename U, typename... Args> requires (sizeof...(Args) > 0) constexpr decltype(auto) check() { return std::integral_constant<bool, __is_same_as(T, U) && decltype(check<U, Args...>())::value>(); } template <typename T, typename U, typename... Args> concept bool Same() { return decltype(check<T, U, Args...>())::value; } template <typename T, typename U, typename... Args> concept bool Similar = true; template <typename... Args> requires Same<Args...>() // { dg-error "invalid reference" } void foo( Args... args ) {} template <typename... Args> requires Similar<Args...> // { dg-error "invalid reference" } void bar( Args... args ) {} int main() { foo(1, 2, 3); // { dg-error "cannot call" } bar(1, 2, 3); // { dg-error "cannot call" } }