Home > Backend Development > C++ > body text

Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?

DDD
Release: 2024-11-24 12:52:43
Original
342 people have browsed it

Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?

GCC Error: Explicit Specialization in Non-Namespace Scope

Question:

Why does the following code fail to compile in GCC when explicitly specializing a member function template within a class?

template<typename T>
struct Widget
{
    template<typename U>
    void foo(U)
    {
    }

    template<>
    void foo(int*)
    {
    }
};
Copy after login

Answer:

According to the C standard ([temp.expl.spec], paragraph 2), explicit specializations may be declared in any scope in which the corresponding primary template may be defined. Therefore, the code should compile in GCC as well.

GCC Bug and Reporting:

This failure to compile in GCC is likely a bug. To report it, follow these steps:

  1. Create a bug report at https://gcc.gnus.org/bugzilla/index.cgi.
  2. Assign the "C " component and the appropriate version of GCC (e.g., "8").
  3. Provide a description of the issue, including the error message you received and the expected behavior.
  4. Attach a minimal reproducible code snippet (e.g., the code you provided) to the report.

Standard Reference:

The C standard section [temp.expl.spec] paragraph 2 states:

An explicit specialization may be declared in any scope in which the corresponding primary template may be defined.

The above is the detailed content of Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template