实例化错误后如何避免专业化
How to avoid specialization after instantiation error?
这是一个简化的问题。
template <class T>
std::string name(const T&); // This is the template
// I want to explicitly specialize.
class Outer
{
class Inner
{
};
class Container : public ::Container<Inner> // This causes also an implicit
// specialization of f::name
{
};
};
我如何专门化
template <class T>
std::string name(const T&);
对于Outer::Inner
?
我不能在我考虑的三个地方宣布明确的专业化:
template <class T>
std::string name(const T&);
// 1. Here I cannot forward declare a nested class
class Outer
{
class Inner
{
};
// 2. Here I get error: explicit specialization
// in non-namespace scope 'class Outer'
class Container : public ::Container<Inner>
{
};
};
// 3. Here I get error: specialization of '...' after instantiation
我该如何解决这个问题?
看看这篇文章。您最好只为您想要"专门化"的特定类型编写一个name
函数:
std::string name(const Outer::Inner&);
相关文章:
- 如何使用默认参数等选择模板专业化
- C++避免重复声明的语法是什么
- 在没有太多条件句的情况下,我如何避免被零除
- 模板化建造师专业化
- 如何重构类层次结构以避免菱形问题
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 以下示例中如何避免代码复制?C++/库达
- Python中的for循环与C++有何不同
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 是否应该在模板化代码中完全避免const
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- C 模板专业化 - 避免重新定义
- 我如何避免重复的模板专业化
- 有效使用enable_if C++模板以避免类专业化
- 实例化错误后如何避免专业化
- 避免在用户定义的模板专业化中重复
- 避免模棱两可的部分专业化