Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/concepts/dr1430.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
line wrap: on
line source
// PR c++/66092 // { dg-options "-std=c++17 -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" } }