问题标签 [template-specialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么不允许模板特化在不同的命名空间中?
请看看我想要做什么:
这是不允许的。您能否澄清一下为什么专业化不能位于不同的命名空间中,以及可用的解决方案是什么?另外,它在 C++0x 中是固定的吗?
例如,这将允许我专门化std::max
、std::swap
、等。而无需通过向?std::numeric_limits
中添加一些东西来诉诸未定义的行为。::std::
@AndreyT 以下是我使用它的方式:
这可以做到吗?
c++ - 如何专门化非模板类的模板成员函数?
假设我有一个文件 alpha.h:
如果我在多个 cpp 文件中包含 alpha.h 并使用 GCC 4.4 进行编译,它会抱怨存在多个对象文件的多个定义foo<int>
和foo<float>
跨多个对象文件。对我来说很有意义,所以我将最后两行更改为:
但随后 GCC 说:
显式模板特化不能有存储类
好的......那么我应该如何正确地做到这一点?我担心 C++ 不允许我首先尝试做的事情,在这种情况下,是否有一个好的习语可以完成同样的事情?
c++ - Typedef 和模板特化
考虑这段代码:
它失败了,因为编译器看到的是some_trait<int>
.
解决这个问题的最佳方法是什么?
c++ - char数组的模板特化上的“未解析的外部符号”
我的代码中有这样的东西:
这会产生以下链接器错误:
我应该将 A 模板专门用于什么类型,以便可以将它与字符数组一起使用?我尝试const char*
了 const、char、* 和 & 的其他组合,但没有任何效果。
请注意,我无法更改DoSomething
功能。
另外,如果可能的话,我希望编译器自动推断(或转换)模板类型,而不在DoSomething<smth>()
调用中指定它main()
。
c++ - SFINAE:有些失败比其他失败更平等?
我正在尝试使用SFINAE来区分具有名为“名称”的成员的类。我以似乎是标准模式的方式进行了设置,但它不起作用——编译器没有默默地忽略“失败”的替换,而是产生了一个错误。
我确定我遇到了一些模板替换规则,如果有人能解释哪一个,我将不胜感激。
这是一个精简的例子。我正在使用 gcc:
c++ - 类命名空间内的模板特化
如何专门化在我的类主体中的某个外部命名空间中定义的模板?
使用不编译的 BGL 的具体示例:
如果将 container_gen 的专业化移出 A 类,一切都会很好。具体问题是我不知道如何从 A 类引用“boost”命名空间。
c++ - 类模板中函数的专业化顺序是否重要
考虑类似...
请注意专业化如何高于非专业化版本。如果我将专业版本放在非专业版本之下Vector<float>
, == 比较是否仍能按预期工作?出于某种原因,我想我记得读过,如果您在这种情况下将专业化放在下面,那么当编译器查看标头时,它将首先看到默认值,看看它是否有效,然后使用它。
c++ - 如何为模板专业化创建类型标签
iostream
我有一个通过模板支持 -syntax的自定义日志记录类operator <<
:
我也有这个操作符的专门版本,应该在日志消息完成时调用:
EndOfMessageType
定义如下:
定义了全局常量eom
,以便用户可以像std::endl
在日志消息末尾一样使用它。我的问题是,这个解决方案是否有任何陷阱,或者是否有一些既定的模式可以做到这一点?
提前致谢!
c++ - 模板专业化:非内联函数定义问题
以下代码可以正确编译。
但是,如果我尝试在void doSomething(char val1, std::string val2)
外部定义,则会收到以下错误。
错误:
错误 1 错误 C2910: 'Container::doSomething' : 不能明确专门化 c:\users\bharani\documents\visual studio 2005\projects\templates\template specialization\templatespecializationtest.cpp 35
我犯了什么错误?
谢谢。
c++ - 为什么在显式实例化类模板之前需要显式实例化外部类模板
我的问题是以下线程:专门化成员模板而不专门化其父模板
我完全同意标准说这样做是非法的。但我想了解为什么这样做是非法的?如果允许,会有什么影响?