public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/60274] New: String as template parameter - regression in 4.8.2
@ 2014-02-19 13:53 ondrej.kolacek1 at centrum dot cz
  2014-02-19 14:03 ` [Bug c++/60274] [4.8/4.9 Regression] String as template parameter - regression in 4.8.3 rguenth at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: ondrej.kolacek1 at centrum dot cz @ 2014-02-19 13:53 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 60274
           Summary: String as template parameter - regression in 4.8.2
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ondrej.kolacek1 at centrum dot cz

Greetings, this issue happened to me with Debian's g++ so it is possible it is
just their bug but hopefully (well this is debatable :) ) it is not.


<begin file test.cpp>
typedef const char *const&  ProtocolIdType;
//typedef int ProtocolIdType;

template <ProtocolIdType protocolId>
class C {
public:
    typedef int ProtocolVersion;

    class D
    {
    public:
        ProtocolVersion GetProtocolVersion();
    };

};
template <ProtocolIdType protocolId>
typename C<protocolId>::ProtocolVersion C<protocolId>::D::GetProtocolVersion()
{
    return 1;
}

int main(void)
{
}
<end file test.cpp>

>g++ test.cpp
test.cpp:18:41: error: prototype for ‘typename C<protocolId>::ProtocolVersion
C<protocolId>::D::GetProtocolVersion()’ does not match any in class
‘C<protocolId>::D’
 typename C<protocolId>::ProtocolVersion C<protocolId>::D::GetProtocolVersion()
                                         ^
test.cpp:13:19: error: candidate is: C<protocolId>::ProtocolVersion
C<protocolId>::D::GetProtocolVersion()
   ProtocolVersion GetProtocolVersion();


The code used to work for ages, is compilable with MSVC, clang and gcc on
various platforms, was compilable with 4.8.1 but broke with 4.8.2. The issue is
with string template parameter; replacing 
typedef const char *const&  ProtocolIdType;
by 
typedef int ProtocolIdType;
makes the error go away.


> g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.8.2-15'
--with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap
--enable-plugin --with-system-zlib --disable-browser-plugin
--enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.2 (Debian 4.8.2-15)
>From gcc-bugs-return-444208-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Feb 19 13:54:21 2014
Return-Path: <gcc-bugs-return-444208-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 18055 invoked by alias); 19 Feb 2014 13:54:21 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 18010 invoked by uid 48); 19 Feb 2014 13:54:17 -0000
From: "slayoo at staszic dot waw.pl" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/60267] ICE in c_pp_lookup_pragma, at c-family/c-pragma.c:1232; ICE in tsubst_copy, at cp/pt.c:12887
Date: Wed, 19 Feb 2014 13:54:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: slayoo at staszic dot waw.pl
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: jakub at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-60267-4-K3FEp2WIVq@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60267-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60267-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-02/txt/msg01965.txt.bz2
Content-length: 271

http://gcc.gnu.org/bugzilla/show_bug.cgi?id`267

--- Comment #8 from Sylwester Arabas <slayoo at staszic dot waw.pl> ---
BTW, I have initially reported it as a comment to
http://gcc.gnu.org/bugzilla/show_bug.cgi?id`198 (the same file/line in ICE
error message).

S.


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

end of thread, other threads:[~2014-02-21  5:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-19 13:53 [Bug c++/60274] New: String as template parameter - regression in 4.8.2 ondrej.kolacek1 at centrum dot cz
2014-02-19 14:03 ` [Bug c++/60274] [4.8/4.9 Regression] String as template parameter - regression in 4.8.3 rguenth at gcc dot gnu.org
2014-02-19 15:34 ` jakub at gcc dot gnu.org
2014-02-21  4:10 ` jason at gcc dot gnu.org
2014-02-21  4:43 ` jason at gcc dot gnu.org
2014-02-21  5:05 ` jason at gcc dot gnu.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).