小编and*_*sxp的帖子

Clang没有注意到默认的模板参数

背景

根据C++标准,当使用默认模板参数向前声明模板类型时,它们中的每一个都只能出现在一个声明中.例如:

// GOOD example
template <class T = void>
class Example;    // forward-declaration

template <class T>
class Example {}; // definition
Run Code Online (Sandbox Code Playgroud)
// GOOD example
template <class T>
class Example;    // forward-declaration

template <class T = void>
class Example {}; // definition
Run Code Online (Sandbox Code Playgroud)
// BAD example
template <class T = void>
class Example;    // forward-declaration

template <class T = void> // ERROR: template parameter redefines default argument
class Example {}; // definition
Run Code Online (Sandbox Code Playgroud)

问题

在我的代码中,我在不同的文件中有很多前向声明,所以将默认参数放在定义中是有意义的:

// foo.hpp, bar.hpp, baz.hpp, etc. …
Run Code Online (Sandbox Code Playgroud)

c++ templates clang default-arguments

14
推荐指数
2
解决办法
198
查看次数

标签 统计

c++ ×1

clang ×1

default-arguments ×1

templates ×1