ctor4.c

来自「xml大全 可读写调用率很高 xml大全 可读写调用率很高」· C语言 代码 · 共 40 行

C
40
字号
// { dg-do compile }// Copyright (C) 2001 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 24 Jun 2004 <nathan@codesourcery.com>// Origin Rani Sharoni via giovannibajo@libero.it// Bug 16174, SFINAE failure.template <class T> struct K {  K();  K(K<T> & rhs);  K(K<T> const& rhs);  template <class U> K(K<U> const& rhs);private:  template <class U> struct A;  template <class U> struct A< K<U> const>  {  typedef typename K<U>::compile_time_error type; };  // This is used to reject calls to the copy constructor  //  with objects which are top-level const. If they are  //  const, the specialization of A is instantiated and  //  causes a compile time error. Otherwise, the general  //  template is picked up, it misses definition, so this  //  ctor declaration is rejected by SFINAE and everybody  //  is happy.  // GCC 3.4.1pre and 3.5.0 always matches A's specialization  //  when instantiating from foo(), and this causes the error.  template <class U>  K(U& rhs, typename A<U>::type = 0);};K<int> foo(void){  return K<int>();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?