- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我审查的一些代码中,我遇到了 Clang 和 Gcc 不同意的情况。环顾四周后,我似乎无法弄清楚谁是对的。
免责声明:我知道有更好的单例模式,但这是代码中使用的模式。
注意事项:
Ubuntu 上的 gcc 7.4.0(无错误)
Ubuntu 上的 clang 6.0.0(抛出错误)
C++11 之后的所有 ISO 版本似乎都存在差异,但我之前没有尝试过。
foo.hh
#include "sing.hh"
class Foo {
public:
Foo();
~Foo();
static Foo *getSingleton(){
return singleton<Foo>::instance();
}
};
foo.cc
include "foo.hh"
//removing this line results in the error for clang disappearing
template<> singleton<Foo>::GetInstance singleton<Foo>::instance = nullptr;
int main(){};
唱.hh
template<typename T>
class singleton{
typedef T *(*GetInstance)(void);
public:
static GetInstance instance;
};
结果:
$ clang++ foo.cc
foo.cc:3:56: error: explicit specialization of 'instance' after instantiation
template<> singleton<Foo>::GetInstance singleton<Foo>::instance = nullptr;
^
./foo.hh:10:32: note: implicit instantiation first required here
return singleton<Foo>::instance();
^
1 error generated.
$ g++ foo.cc <- No Errors
最佳答案
这两个编译器在技术上都没有错。代码无效,但不需要 C++ 实现来提供有关此类错误的诊断消息。
标准[temp.expl.spec]/6说(强调我的):
If a template, a member template or a member of a class template is explicitly specialized then that specialization shall be declared before the first use of that specialization that would cause an implicit instantiation to take place, in every translation unit in which such a use occurs; no diagnostic is required.
您可以通过在 sing.hh 中定义 singleton
之后立即声明显式特化来解决此问题:
struct Foo;
template<> singleton<Foo>::GetInstance singleton<Foo>::instance;
或者,如果您希望所有特化都初始化为空指针,您可以只定义通用类模板的成员,同样可能在 sing.hh 中。这样就不需要显式特化,除非您想要对某些特定类型使用不同的初始化程序。
template<typename T>
typename singleton<T>::GetInstance singleton<T>::instance = nullptr;
关于c++ - Clang 和 Gcc 不同意实例化后的显式特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56351128/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我编写了简单的 Java 应用程序供自己使用,它扫描 Excel 文档并从中提取一些事件。对于下一阶段,我希望它登录我的 Google 帐户并使用 Google Calendar API 创建这些事件
我有一个带有链接标记的复选框。单击链接标签时,我的模式打开。单击按钮然后选中复选框时我有模式 I agree with "Terms a
Consent SDK允许显示同意书,但目前只有英文版本(SDK 版本 1.0.3)。 SDK页面说: To update consent text of the Google-rendered co
您好,我需要一些关于如何应用丝潮cookie同意脚本的帮助http://silktide.com/cookieconsent/code 。 (由于欧盟 cookie 法等原因,我想对此进行广告)。现在
我收到了一封来自 Goolge 的关于在我的网站上实现 cookie 许可的电子邮件。我在 Play 商店中只发布了一个 Android 应用程序。它使用广告获利。有必要实现 cookie 同意消息吗
我正在尝试从 Youtube channel 检索 Youtube 视频列表,例如“https://www.youtube.com/user/YouTube/videos”,以获取第 n 个视频(感谢
我想抓取(使用 rvest )一个要求用户同意设置 cookie 的网站。如果我只是抓取页面,则 rvest 只会下载弹出窗口。这是代码: library(rvest) content % html_
我有一个 HTML 网站,我想向其中添加 Cookie-Consent。 类似于 Stackoverflow:Stackoverflow Screenshot 将会出现可能包含屏幕截图中所示链接的文本
我正在尝试将字符串与字符串向量匹配: a <- c('abcde', 'abcdf', 'abcdg') agrep('abcdh', a, max.distance=list(substitutio
我目前正在尝试集成 Google Consent SDK。onConsentInfoUpdated(consentStatus:ConsentStatus) 函数发生了一些我无法理解的事情 用户第一次
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭去年。 Im
我们在 Azure AD 中有一个使用 Microsoft Graph API 的应用。该应用程序使用 4 个基本权限成功运行:电子邮件、个人资料 User.Read User.ReadBasic.A
我们在 Azure AD 中有一个使用 Microsoft Graph API 的应用。该应用程序使用 4 个基本权限成功运行:电子邮件、个人资料 User.Read User.ReadBasic.A
此代码中未使用变量“status”。因此我无法检查用户的同意选择。 我必须将“状态数组”存储在默认值中。一旦当前状态在数组中可用,它将不会显示同意书。如果没有,那么我们将显示表单并将该状态添加到默认状
这是一个例子: 具体的实现可能有一些特定的行为,比如 ArrayList 的实现有 ensureCapacity(),它不适用于 LinkedList。 //programming to interf
我在一个网站上工作,我们目前有一个 cookie 横幅,它在启动时显示并有一个确定按钮。然而,我想改变这一点,让用户可以选择打开/关闭他们希望被跟踪的 cookie 类别。像这样: 我是 reactj
我正在使用 Mac OS X 10.9.5 和 git 版本 2.1.2。进入 推我收到: 同意 Xcode/iOS 许可证需要管理员权限,请通过 sudo 以 root 身份重新运行。 致命:无法从
搜索似乎只能找到使用 JavaScript 的解决方案。我想显示一个 Cookie 同意消息,即使访问者使用脚本拦截器也能看到它,所以我想知道这是否可以使用 CSS 和 HTML 来完成,而不需要任何
fun sample(list_of_str_lists, s) = case list_of_str_lists of [] => [] | x::[]
我是一名优秀的程序员,十分优秀!