小编Ad *_*d N的帖子

为什么shared_ptr <void>合法,而unique_ptr <void>是不正确的?

问题确实符合标题:我很想知道这种差异的技术原因是什么,还有理由?

std::shared_ptr<void> sharedToVoid; // legal;
std::unique_ptr<void> uniqueToVoid; // ill-formed;
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers shared-ptr unique-ptr

89
推荐指数
2
解决办法
1万
查看次数

如何在IDE中使用CMake显示标题 - 这不是任何二进制目标的一部分?

在我们的工作流程,我们可以有一个模块,一个是由几个头文件,模块A不产生任何二进制(旁注:这显然会被其他模块,包括部分标题从使用模块A生成的二进制文件) .

一个很好的例子是一个只有标题的库,由于INTERFACE库的概念,CMake 3引入了很好的支持(参见这个SO答案,以及CMake的特性文档).

我们可以从模块A中创建一个接口库目标:

add_library(module_A INTERFACE)
Run Code Online (Sandbox Code Playgroud)

这为我们提供了CMakes目标的所有优点(可以将其用作另一个目标的依赖,导出它,传递转发需求等)

但在这种情况下,模块A中的标头不会显示在我们的IDE中(Xcode,但我们希望它与大多数/所有其他IDE相同).

这被证明是工作流程中的主要缺点,因为我们需要在IDE中显示组成模块A的文件以进行编辑.是否有可能实现这一目标?

c++ ide xcode cmake header-files

33
推荐指数
2
解决办法
7849
查看次数

为什么heroku local:run想要使用全局python安装而不是当前激活的虚拟环境?

使用Heroku来部署我们的Django应用程序,除了heroku local:run命令之外,一切似乎都按规范工作.

我们经常需要通过Django的manage.py文件运行命令.在遥控器上运行它们,作为一次性dynos,完美无瑕地工作.要在本地运行它们,我们尝试:

heroku local:run python manage.py the_command
Run Code Online (Sandbox Code Playgroud)

尽管当前虚拟环境包含Django安装,但失败了

 ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)

 通过python路径进行诊断

然后heroku local:run which python返回:

 /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

which python回报:

 /Users/myusername/MyProject/venv/bin/python #the correct value
Run Code Online (Sandbox Code Playgroud)
  • 这是Heroku本地的一个错误:运行?或者我们是否错过了解其预期的行为?
  • 更重要的是:有没有办法heroku local:run使用当前安装的虚拟环境?

python heroku virtualenv pythonpath

18
推荐指数
1
解决办法
497
查看次数

如何防止 VS Code 在 IntelliSense 自动完成功能上删除下一个单词字符?

这个问题类似于How to keep Visual Studio autocomplete from overwriting the next word,但针对的是 Visual Studio Code 而不是 Visual Studio。

当从列表中选择完成建议时,它会被插入,但光标后面的单词中的所有字符都会被删除。(因此,如果光标后面有空格,则不会发生任何事情。但是,如果在光标放置在单词开头时触发自动补全,则该单词将被删除)。

有没有办法禁用此删除行为并让它添加所选建议而不删除插入符号右侧的文本?

intellisense visual-studio-code

16
推荐指数
1
解决办法
3536
查看次数

在Jenkins管道中使用Groovy迭代地图是不可能的

我们正试图迭代Map,但没有任何成功.我们将问题简化为这个最小的例子:

def map = [
           'monday': 'mon',
           'tuesday': 'tue',
           ]
Run Code Online (Sandbox Code Playgroud)

如果我们尝试迭代:

map.each{ k, v -> println "${k}:${v}" }
Run Code Online (Sandbox Code Playgroud)

仅输出第一个条目: monday:mon


我们知道的替代方案甚至无法进入循环:

for (e in map)
{
    println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)

要么

for (Map.Entry<String, String> e: map.entrySet())
{
    println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)

失败,都只显示异常java.io.NotSerializableException: java.util.LinkedHashMap$Entry.(这可能与提出'真实'例外时发生的异常有关,阻止我们知道发生了什么).

我们正在使用最新的稳定jenkins(2.19.1),截至今天(2016/10/20)所有插件都是最新的.

是否有解决方案来迭代MapJenkins管道Groovy脚本中的元素?

groovy dictionary jenkins jenkins-pipeline

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

使用C或C++从USB设备接收数据

我需要一个所有插入USB设备的列表,并让用户选择一个让控制台应用程序接收USB设备发送的任何数据.

然后,我可以开始使用我的程序中的数据.

我不想使用库,只有标准的C++函数,程序应该在Windows 98中使用.

c++ windows usb

12
推荐指数
2
解决办法
4万
查看次数

是否有C++ Primer第5版的最新勘误表?

通过这本书,我觉得我在几个部分遇到了错误.(对于一本这么长的书来说,毛刺和错误会发现它们似乎很正常.)

我发现的唯一勘误是在InformIT上,但它的最后一次修改是在2012年10月9日,即该书发行后不到两个月(差不多三年前).

有人知道官方或非正式的勘误表,自本书发行以来一直保持这样吗?

c++

12
推荐指数
1
解决办法
1837
查看次数

在CMake中构建MACOSX_BUNDLE时,如何将链接的动态库复制到捆绑包中?

我们构建了一个在.app包中发布的OS X应用程序.构建管理使用CMake实现.此应用程序依赖于CMake目标库(可能已导入)和Findxxx.cmake脚本xxx_LIBRARIES填充的变量中可用的库.CMakeLists.txt的大纲可能是:

project(OSX_Bundle)

add_executable(${PROJECT_NAME} MACOSX_BUNDLE main.mm )

target_include_directories(${PROJECT_NAME}  PRIVATE
                           ${LibA_INCLUDE_DIRS} )

target_link_libraries(${PROJECT_NAME}
                      ${LibA_LIBRARIES}
                      LibB
                      "-framework Cocoa" )
Run Code Online (Sandbox Code Playgroud)

现在,我们需要将LibA.dylibLibB.dylib复制到规范的OSX_Bundle.app/Contents/Frameworks中.应该在构建树中以及在安装树中为应用程序完成此副本.虽然它看起来像是一项基本任务,但我们无法在网上找到一个好的资源来解释解决这个问题的最佳方法.

macos cmake dylib

12
推荐指数
1
解决办法
3333
查看次数

是否可以将别名模板标记为朋友?

想象一下,我们有这个代码:

template <class, class>
class Element
{};

template <class T>
class Util
{
public:
   template <class U>
   using BeFriend = Element<T, U>;
};
Run Code Online (Sandbox Code Playgroud)

是否可以标记BeFriend为朋友?(Util任何其他类)

 编辑

尝试了"明显"的语法,但是Clang 3.6都失败了.

template <class> friend class BeFriend;
template <class> friend BeFriend;
Run Code Online (Sandbox Code Playgroud)

我不知道第二种语法,但在这个答案中找到了它.它似乎对模板别名起作用(并且是必需的),但在别名被模板化的情况下没有帮助.

(注意:正如有些人可以从最小的例子中推断,我正在寻找一种方法来解决C++不允许朋友部分模板专业化的限制)

c++ templates friend c++11 template-aliases

10
推荐指数
1
解决办法
787
查看次数

是否存在将实际Base向下转换为Derived的情况?

在一般情况下,从(动态)下降Base到其中一个派生类是(非常应得的)未定义行为Derived

显而易见的UB

class Base
{
public:
    virtual void foo()
    { /* does something */ }

    int a;
}

class Derived : public Base
{
public:
    virtual void foo()
    { /* does something different */ }

    double b;
}

Base obj;
Derived derObj = *static_cast<Derived *>(&obj);  // <- here come the demons
Run Code Online (Sandbox Code Playgroud)

在目前的编译器实现方法中,这里显然至少存在Vtable和b中包含垃圾值的值不一致的问题.因此,在这些条件下,标准没有定义向下转换的行为是有道理的.

不那么明显的天真案例

然而,我很想知道在特定情况下这条规则是否有一些让步? 举个例子:

class Base
{
public:
    void foo()
    { /* does something */ }

    int a = 1;
    double b = 2.;
} …
Run Code Online (Sandbox Code Playgroud)

c++ casting undefined-behavior

9
推荐指数
1
解决办法
421
查看次数