小编Tac*_*oma的帖子

使用g ++和clang ++调用Integral模板成员函数时出错

我目前陷入编译错误,我无法确定...

这是一个最小的工作示例:

#include <iostream>

template <typename T, int R>
class a_type
{
public:
     template <int N>
     double segment()
      {
           return 42;
      }
};

template <int M>
double func()
{
     a_type<double, M> a;
     return a.segment<1>();
}

int main(int argc, char *argv[])
{
     std::cout << func<10>() << std::endl;
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

GCC的错误消息如下:

g++ main.cpp -o main
main.cpp: In function 'double func()':
main.cpp:18:26: error: expected primary-expression before ')' token
      return a.segment<1>();
                          ^
main.cpp: In instantiation of 'double func() [with int M = 10]': …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates member clang++

5
推荐指数
1
解决办法
143
查看次数

标签 统计

c++ ×1

clang++ ×1

gcc ×1

member ×1

templates ×1