https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72852

            Bug ID: 72852
           Summary: constexpr inside class template cannot be recognized
           Product: gcc
           Version: 5.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: liweifriends at gmail dot com
  Target Milestone: ---

The code is as follows:

#include <type_traits>
#include <iostream>
using namespace std;

template <typename T>
struct Outer
{
    template <typename T2>
    struct Inter
    {
        constexpr static bool value = std::is_same<T2, T>::value;
    };

    template <typename T2>
    constexpr static bool value = Inter<T2>::value;
};

template <typename T1, typename T2>
struct Wrapper
{
    constexpr static bool value = Outer<T1>::template value<T2>;
};

int main()
{
    cerr << Wrapper<int, int>::value << endl;
}

When compile as follows:
g++ --std=c++14 ./main.cpp

Gcc reports a bug said value<T2> is not a member of Outer<int>

Reply via email to