小编Mik*_*han的帖子

使用Microsoft Visual Studio 2013的C++ 11用户定义的文字

据我所知,在MVS 2013中包含并支持UDL.

我曾尝试过这样的事情:

    myclass operator"" _suffix();
    int     operator"" _suffix();
Run Code Online (Sandbox Code Playgroud)

上述两行都给出了错误"",说它预计会有运营商.我的猜测是项目设置有问题,因为代码应该工作,MVS13支持UDL.

可能是什么问题,我该如何解决?

c++ user-defined-literals c++11 visual-studio-2013

4
推荐指数
1
解决办法
1381
查看次数

继承时删除重复的模板typename条目

我有一个继承自的模板类(从现在开始作为父级引用).

模板类初始化包含子类中指定的类和构造函数的融合列表成员变量.

template<typename... ITEM_TYPES>
using List = boost::fusion::list<ITEM_TYPES...>;

template<typename... CHILDREN_TYPES>
class ElementContainer 
{ 
protected:
    const List<CHILDREN_TYPES...> children;
public:
     ElementContainer(CHILDREN_TYPES&&... args) : children(forward<CHILDREN_TYPES>(args)...) {}
};
Run Code Online (Sandbox Code Playgroud)

子类的示例:

class XMLSignatureDocument : public ElementContainer<XMLDeclarationElement, SignatureXMLElement>
{
public:
    XMLSignatureDocument() :ElementContainer(
        XMLDeclarationElement("<?xml version=\"1.0\" encoding=\"utf-8\"?>"),
        SignatureXMLElement("<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"></signature>"
        )) {};
};
Run Code Online (Sandbox Code Playgroud)

当我创建这样的子类时,我必须在列表中指定类的类型两次:

一旦进入"继承自"规范:

class XMLSignatureDocument : public ElementContainer<XMLDeclarationElement, SignatureXMLElement>
Run Code Online (Sandbox Code Playgroud)

当我指定各个类的构造函数参数时:

XMLSignatureDocument() :ElementContainer(
    XMLDeclarationElement("<?xml version=\"1.0\" encoding=\"utf-8\"?>"),
    SignatureXMLElement("<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"></signature>"
    )) {};
Run Code Online (Sandbox Code Playgroud)

我想只需要指定一次 - 当我还指定构造函数参数时,如下所示:

class XMLSignatureDocument : public ElementContainer<...>
{
public:
    XMLSignatureDocument() :ElementContainer(
        XMLDeclarationElement("<?xml version=\"1.0\" encoding=\"utf-8\"?>"),
        SignatureXMLElement("<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"></signature>"
        )) {}; …
Run Code Online (Sandbox Code Playgroud)

c++ templates boost template-meta-programming c++14

4
推荐指数
1
解决办法
107
查看次数

当主要退出控制台输出的位置时?

#include<iostream>
#include<thread>
using namespace std;
void func()
{
    for (int i = 0; i < 10000; i++)cout << "Print" << endl;
}

int main()
{
    thread t(func);
    t.detach();
    cout << "Exit" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当主要退出时,"Print"文本将在哪里消失,因为它没有输出流?是否存在用于插入无用的数据的虚拟流?

multithreading c++11

4
推荐指数
1
解决办法
157
查看次数

世博会共享链接不可点击

我一直在尝试为我的 Expo 应用程序创建机制,该机制将允许用户共享应用程序的内容(所以我基​​本上需要与参数链接,并且根据文档,我认为我知道如何做到这一点

我想开始通过简单的共享来创建这种机制,无需参数(只需可单击的链接即可打开应用程序)。这是我的代码(当用户按下共享按钮时执行):

share = async () => {
  await Share.share({
    message: Linking.makeUrl()
  })
}
Run Code Online (Sandbox Code Playgroud)

它共享链接(我在Messenger上尝试过),但共享链接不可点击。我还尝试使用exp://192.168.100.3:190000该点指向我在同一 LAN 中的 PC(我从http://localhost:19002/) 中运行 Metro Bunler,并复制隧道链接 - 这些都不起作用,链接只是纯文本,如果用户单击它,则什么也没有发生。但是,当我扫描二维码时,http://localhost:19002/(metro 捆绑器页面)应用程序会按例外打开。

share react-native expo

4
推荐指数
1
解决办法
2675
查看次数

使用类作为带有前向声明的模板化类的模板参数

我知道经过诸如此类的前瞻声明之后

class Foo;
Run Code Online (Sandbox Code Playgroud)

我可以将变量声明为Foo*Foo&,但不是Foo.

如果我有一个模板化的类和实例化

template<class T>
class Bar {
  public:
    T baz;
};
...
Bar<Foo> v;
Run Code Online (Sandbox Code Playgroud)

上述规则将如何适用?Foo必须在Bar定义类的时候被完全声明(而不是仅向前声明),或者在v声明这一点时?或者它可能只需要在Bar<Foo>源文件中的任何位置使用,而其他所有不是?别的什么?

谢谢

c++ templates

3
推荐指数
1
解决办法
45
查看次数

检查变量是空还是空的正确方法

我有以下代码,我的同事告诉我这是不正确的,如果我的变量为null将崩溃:

List<FSKUser> users = null;

if (users == null || users.Count() == 0)
{
   return false;
}
Run Code Online (Sandbox Code Playgroud)

显然这=null只是为了测试目的.但是,当我运行此代码时,它正确运行并返回false.

我正在检查一种安全正确的检查方式吗?

c# null

3
推荐指数
1
解决办法
1359
查看次数

是否有任何支持以下操作的 boost/stl 容器?

我正在寻找可以提供以下功能的 stl/boost 容器:

  1. 按排序顺序自动插入元素。(日志 n)
  2. 从起始节点返回元素的索引/深度。(日志 n)

如果没有,那么实现这一目标的最佳方法是什么?我正在考虑使用双向链接列表的解决方案。那会是解决这个问题的好选择吗?

c++ boost stl c++11

3
推荐指数
1
解决办法
928
查看次数

如何修复错误:'::max_align_t'?

我收到错误

“/usr/include/c++/5/cstddef:51:11: 错误:'::max_align_t' 尚未使用 ::max_align_t 声明;^”

所以我应该更新库,因为我找到了这个解决方案:

“在库更新之前的解决方法是包含<cstddef><stddef.h>在该库中的任何标头之前。”
我在 Ubuntu 终端上写了一些命令,例如:

bash $ sudo apt-get install apt-file
bash $ sudo apt-file update
bash $ apt-file search stddef.h
Run Code Online (Sandbox Code Playgroud)

然后错误仍然存​​在。谢谢

c++ gcc ubuntu-15.04

3
推荐指数
1
解决办法
7327
查看次数

GCC -MM 标志的“系统标头”的确切含义

根据 GCC 文档, -MM 标志将以这种方式生成依赖项:

与 -M 类似,但不提及在系统头目录中找到的头文件,也不提及直接或间接包含在此类头中的头文件。

我刚刚发现在我的项目中使用的 -MM 标志不仅抑制了对系统头文件的依赖,而且还抑制了对我本地安装在我的主目录中的第三方库头文件的依赖。摆脱系统头文件的依赖对我来说通常很方便(因为我不编辑它们),但是我有时会编辑/自定义第三方库,当然我需要在这样的编辑后重建我的代码。

所以,我的问题是 GCC 的“系统标头”是什么?假设您在主目录中安装了自定义版本的 libpng,并对其进行了编辑以满足您的需要……这是 GCC 的“系统头文件”吗?

同时,我只是将 -M 作为临时解决方法。

dependencies gcc

3
推荐指数
1
解决办法
1449
查看次数

QDir :: rename:冗余参数?

我正在使用QT 5.7,并且来自doc:

bool QDir::rename(const QString &oldName, const QString &newName)
Run Code Online (Sandbox Code Playgroud)

我为什么要指定dir的oldName?这不是现在的名字吗?我正在考虑这个重载函数:

bool QDir::rename(const QString &newName){
    return this->rename(this->dirName(), newName);
}
Run Code Online (Sandbox Code Playgroud)

API是否指向当前目录的子目录?

c++ qt

3
推荐指数
2
解决办法
262
查看次数