public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/26988]  New: template function in template class derived from virtual base can not be specialized
@ 2006-04-02 15:05 nuttygraphics at yahoo dot com
  2006-04-02 16:21 ` [Bug c++/26988] template constructor " pinskia at gcc dot gnu dot org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: nuttygraphics at yahoo dot com @ 2006-04-02 15:05 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3804 bytes --]

Given the following code:


 #define VIRTUAL virtual
//#define VIRTUAL                    // use this to 'fix' the code

#include <iostream>
using namespace std;


struct VirtualBase{};


struct Bar : public VIRTUAL VirtualBase
{               
        template< typename castT >explicit
        Bar( castT const& cast );
};
template< >
Bar::Bar( int const & cast )
{
        cout << "Called Bar::Bar( int )!" << endl;
}
template< typename T >
struct Hello : public VIRTUAL VirtualBase
{
        Hello( int i );
};
template< >
Hello< char >::Hello( int i )
{
        cout << "Called Hello::Hello( int )!" << endl;
}

template< typename T >
struct Foo : public VIRTUAL VirtualBase
{               
        template< typename castT >
        Foo( castT const& cast );

        template< typename T1 >
        void func( T1 );

};
template< > template< >
Foo< char >::Foo( int const & cast )
{
        cout << "Called Foo::Foo( int )!" << endl;
}


int main()
{
        Foo< char > fooChar( 42 );

        Bar barChar( 42 );      
        Hello< char > helloChar( 42 );

        return 0;
}

compiled with:
g++ -v -save-temps main.cpp

gives the following output


Es werden eingebaute Spezifikationen verwendet.
Ziel: i386-redhat-linux
Konfiguriert mit: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre
--host=i386-redhat-linux
Thread-Modell: posix
gcc-Version 4.0.2 20051125 (Red Hat 4.0.2-8)
 /usr/libexec/gcc/i386-redhat-linux/4.0.2/cc1plus -E -quiet -v -D_GNU_SOURCE
main.cpp -fpch-preprocess -o main.ii
nicht vorhandenes Verzeichnis
»/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../i386-redhat-linux/include«
wird ignoriert
#include "..." - Suche beginnt hier:
#include <...> - Suche beginnt hier:
 /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2

/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/i386-redhat-linux
 /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/backward
 /usr/local/include
 /usr/lib/gcc/i386-redhat-linux/4.0.2/include
 /usr/include
Ende der Suchliste.
 /usr/libexec/gcc/i386-redhat-linux/4.0.2/cc1plus -fpreprocessed main.ii -quiet
-dumpbase main.cpp -auxbase main -version -o main.s
GNU C++ version 4.0.2 20051125 (Red Hat 4.0.2-8) (i386-redhat-linux)
        compiled by GNU C version 4.0.2 20051125 (Red Hat 4.0.2-8).
GGC-Heuristik: --param ggc-min-expand=99 --param ggc-min-heapsize=129465
main.cpp:18: Fehler: Template-ID »Bar<>« für »Bar::Bar(const int&)« passt zu
keiner Templatedeklaration
main.cpp:18: Fehler: ungültige Funktionsdeklaration
main.cpp:55: Fehler: Template-ID »Foo<>« für »Foo<char>::Foo(const int&)« passt
zu keiner Templatedeklaration
main.cpp:55: Fehler: ungültige Funktionsdeklaration

========================================

The problem can be fixed, by putting the comment to the other #define at the
beginning.

I reproduced this on WinXP - gcc-3.4.2, Linux FC4 with gcc-4.0.0 and 4.0.2

However MSVC 7.1 + 8.0 and Comeau accept the code.


-- 
           Summary: template function in template class derived from virtual
                    base can not be specialized
           Product: gcc
           Version: 4.0.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: nuttygraphics at yahoo dot com
  GCC host triplet: LINUX FC4 and WinXP
GCC target triplet: LINUX FC4 and WinXP


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
@ 2006-04-02 16:21 ` pinskia at gcc dot gnu dot org
  2006-04-18  3:45 ` bangerth at dealii dot org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-04-02 16:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2006-04-02 16:21 -------
Related to PR 9050.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |9050
            Summary|template function in        |template constructor in
                   |template class derived from |template class derived from
                   |virtual base can not be     |virtual base can not be
                   |specialized                 |specialized


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
  2006-04-02 16:21 ` [Bug c++/26988] template constructor " pinskia at gcc dot gnu dot org
@ 2006-04-18  3:45 ` bangerth at dealii dot org
  2006-05-25  2:47 ` mmitchel at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: bangerth at dealii dot org @ 2006-04-18  3:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from bangerth at dealii dot org  2006-04-18 03:45 -------
Confirmed, though this doesn't seem to have anything to do with PR 9050.

Here's a shorter testcase:
--------------
struct B{};

struct Bar : virtual B {               
    template <typename T> Bar( T const& cast );
};

template <> Bar::Bar( int const & cast ) {}

template <typename T>
struct Foo : virtual B {               
    template <typename T1> Foo( T1 const& cast );
};

template< > template< >
Foo< char >::Foo( int const & cast ) {}
---------------------

g/x> /home/bangerth/bin/gcc-4.1-pre/bin/c++ -c x.cc
x.cc:7: error: template-id &#8216;Bar<>&#8217; for &#8216;Bar::Bar(const
int&)&#8217; does not match any template declaration
x.cc:7: error: invalid function declaration
x.cc:15: error: template-id &#8216;Foo<>&#8217; for &#8216;Foo<char>::Foo(const
int&)&#8217; does not match any template declaration
x.cc:15: error: invalid function declaration

The thing that makes me think that this has nothing to do with 9050 is that
if the inheritance is made non-virtual, then the bug goes away. That's 
certainly odd behavior -- this is a bug in semantic analysis, not in the 
parser!

This used to work in 2.95, so is a regression of rejects-valid kind.

W.


-- 

bangerth at dealii dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bangerth at dealii dot org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |rejects-valid
      Known to fail|                            |3.3.5 3.4.4 4.0.1 4.1.0
      Known to work|                            |2.95
           Priority|P3                          |P2
   Last reconfirmed|0000-00-00 00:00:00         |2006-04-18 03:45:10
               date|                            |
   Target Milestone|---                         |4.1.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
  2006-04-02 16:21 ` [Bug c++/26988] template constructor " pinskia at gcc dot gnu dot org
  2006-04-18  3:45 ` bangerth at dealii dot org
@ 2006-05-25  2:47 ` mmitchel at gcc dot gnu dot org
  2006-09-17 19:34 ` [Bug c++/26988] [4.0/4.1/4.2 Regression] " pinskia at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-05-25  2:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from mmitchel at gcc dot gnu dot org  2006-05-25 02:34 -------
Will not be fixed in 4.1.1; adjust target milestone to 4.1.2.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.1                       |4.1.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (2 preceding siblings ...)
  2006-05-25  2:47 ` mmitchel at gcc dot gnu dot org
@ 2006-09-17 19:34 ` pinskia at gcc dot gnu dot org
  2007-01-11  4:05 ` [Bug c++/26988] [4.0/4.1/4.2/4.3 " mmitchel at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-09-17 19:34 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|template constructor in     |[4.0/4.1/4.2 Regression]
                   |template class derived from |template constructor in
                   |virtual base can not be     |template class derived from
                   |specialized                 |virtual base can not be
                   |                            |specialized
   Target Milestone|4.1.2                       |4.0.4


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2/4.3 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (3 preceding siblings ...)
  2006-09-17 19:34 ` [Bug c++/26988] [4.0/4.1/4.2 Regression] " pinskia at gcc dot gnu dot org
@ 2007-01-11  4:05 ` mmitchel at gcc dot gnu dot org
  2007-02-03 16:45 ` gdr at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-01-11  4:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from mmitchel at gcc dot gnu dot org  2007-01-11 04:05 -------
The problem here is that we are not skipping artificial arguments (other than
the "this" pointer) when trying to match the specialization.  The additional
parameters for constructors for classes with virtual bases are therefore
confusing the compiler.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |mark at codesourcery dot com
                   |dot org                     |
             Status|NEW                         |ASSIGNED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2/4.3 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (4 preceding siblings ...)
  2007-01-11  4:05 ` [Bug c++/26988] [4.0/4.1/4.2/4.3 " mmitchel at gcc dot gnu dot org
@ 2007-02-03 16:45 ` gdr at gcc dot gnu dot org
  2007-02-03 20:28 ` pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: gdr at gcc dot gnu dot org @ 2007-02-03 16:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from gdr at gcc dot gnu dot org  2007-02-03 16:45 -------
Won't fix in GCC-4.0.x  Adjusting milestone.


-- 

gdr at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.4                       |4.1.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2/4.3 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (5 preceding siblings ...)
  2007-02-03 16:45 ` gdr at gcc dot gnu dot org
@ 2007-02-03 20:28 ` pinskia at gcc dot gnu dot org
  2007-02-11 20:15 ` mmitchel at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-02-03 20:28 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.3                       |4.1.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2/4.3 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (6 preceding siblings ...)
  2007-02-03 20:28 ` pinskia at gcc dot gnu dot org
@ 2007-02-11 20:15 ` mmitchel at gcc dot gnu dot org
  2007-02-11 21:41 ` mmitchel at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-02-11 20:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mmitchel at gcc dot gnu dot org  2007-02-11 20:15 -------
Subject: Bug 26988

Author: mmitchel
Date: Sun Feb 11 20:15:13 2007
New Revision: 121822

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=121822
Log:
        PR c++/26988
        * pt.c (determine_specialization): Use skip_artificial_parms_for.
        (fn_type_unificiation): Likewise.
        (get_bindings): Likewise.
        PR c++/26988
        * g++.dg/template/spec34.C: New test

Added:
    trunk/gcc/testsuite/g++.dg/template/spec34.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (8 preceding siblings ...)
  2007-02-11 21:41 ` mmitchel at gcc dot gnu dot org
@ 2007-02-11 21:41 ` mmitchel at gcc dot gnu dot org
  2007-02-14  9:10 ` mmitchel at gcc dot gnu dot org
  2008-07-04 15:27 ` [Bug c++/26988] [4.1 " jsm28 at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-02-11 21:41 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from mmitchel at gcc dot gnu dot org  2007-02-11 21:41 -------
Fixed in 4.2.0, 4.3.0.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.0/4.1/4.2/4.3 Regression]|[4.0/4.1 Regression]
                   |template constructor in     |template constructor in
                   |template class derived from |template class derived from
                   |virtual base can not be     |virtual base can not be
                   |specialized                 |specialized


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1/4.2/4.3 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (7 preceding siblings ...)
  2007-02-11 20:15 ` mmitchel at gcc dot gnu dot org
@ 2007-02-11 21:41 ` mmitchel at gcc dot gnu dot org
  2007-02-11 21:41 ` [Bug c++/26988] [4.0/4.1 " mmitchel at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-02-11 21:41 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from mmitchel at gcc dot gnu dot org  2007-02-11 21:41 -------
Subject: Bug 26988

Author: mmitchel
Date: Sun Feb 11 21:40:56 2007
New Revision: 121826

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=121826
Log:
        PR c++/26988
        * pt.c (determine_specialization): Use skip_artificial_parms_for.
        (fn_type_unificiation): Likewise.
        (get_bindings): Likewise.
        PR c++/26988
        * g++.dg/template/spec34.C: New test

Added:
    branches/gcc-4_2-branch/gcc/testsuite/g++.dg/template/spec34.C
Modified:
    branches/gcc-4_2-branch/gcc/cp/ChangeLog
    branches/gcc-4_2-branch/gcc/cp/pt.c
    branches/gcc-4_2-branch/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.0/4.1 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (9 preceding siblings ...)
  2007-02-11 21:41 ` [Bug c++/26988] [4.0/4.1 " mmitchel at gcc dot gnu dot org
@ 2007-02-14  9:10 ` mmitchel at gcc dot gnu dot org
  2008-07-04 15:27 ` [Bug c++/26988] [4.1 " jsm28 at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-02-14  9:10 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.2                       |4.1.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c++/26988] [4.1 Regression] template constructor in template class derived from virtual base can not be specialized
  2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
                   ` (10 preceding siblings ...)
  2007-02-14  9:10 ` mmitchel at gcc dot gnu dot org
@ 2008-07-04 15:27 ` jsm28 at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: jsm28 at gcc dot gnu dot org @ 2008-07-04 15:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jsm28 at gcc dot gnu dot org  2008-07-04 15:26 -------
Closing 4.1 branch.


-- 

jsm28 at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
      Known to fail|3.3.5 3.4.4 4.0.1 4.0.4     |3.3.5 3.4.4 4.0.1 4.0.4
                   |4.1.0                       |4.1.0 4.1.3
      Known to work|2.95                        |2.95 4.2.0 4.3.0
         Resolution|                            |FIXED
   Target Milestone|4.1.3                       |4.2.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26988


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2008-07-04 15:27 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-02 15:05 [Bug c++/26988] New: template function in template class derived from virtual base can not be specialized nuttygraphics at yahoo dot com
2006-04-02 16:21 ` [Bug c++/26988] template constructor " pinskia at gcc dot gnu dot org
2006-04-18  3:45 ` bangerth at dealii dot org
2006-05-25  2:47 ` mmitchel at gcc dot gnu dot org
2006-09-17 19:34 ` [Bug c++/26988] [4.0/4.1/4.2 Regression] " pinskia at gcc dot gnu dot org
2007-01-11  4:05 ` [Bug c++/26988] [4.0/4.1/4.2/4.3 " mmitchel at gcc dot gnu dot org
2007-02-03 16:45 ` gdr at gcc dot gnu dot org
2007-02-03 20:28 ` pinskia at gcc dot gnu dot org
2007-02-11 20:15 ` mmitchel at gcc dot gnu dot org
2007-02-11 21:41 ` mmitchel at gcc dot gnu dot org
2007-02-11 21:41 ` [Bug c++/26988] [4.0/4.1 " mmitchel at gcc dot gnu dot org
2007-02-14  9:10 ` mmitchel at gcc dot gnu dot org
2008-07-04 15:27 ` [Bug c++/26988] [4.1 " jsm28 at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).