小编mav*_*vam的帖子

创建官方github镜像

如何为外部git存储库创建github镜像,使其显示为"真实镜像",例如,如https://github.com/mirrors

到目前为止,我使用以下方法设置镜像:

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git
Run Code Online (Sandbox Code Playgroud)

并配置post receive hook来做一个git push --quiet github.但是,这样,github无法识别镜像.

任何想法如何以github的方式做到这一点,以便"镜像来自"出现在repostiory名称下面?

github mirroring

105
推荐指数
3
解决办法
3万
查看次数

从std :: cout或std :: ofstream(文件)获取std :: ostream

如何根据某个程序条件将a绑定std::ostream到一个std::cout或一个std::ofstream对象?虽然这有多种原因无效,但我想实现在语义上等同于以下内容的东西:

std::ostream out = condition ? &std::cout : std::ofstream(filename);
Run Code Online (Sandbox Code Playgroud)

我见过一些不例外的示例,例如来自http://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.html的示例:

int main(int argc, char *argv[])
{
  std::ostream* fp;                                           //1
  if (argc > 1)
     fp = new std::ofstream(argv[1]);                         //2
  else
     fp = &std::cout                                          //3

  *fp << "Hello world!" << std::endl;                         //4
  if (fp!=&std::cout) 
     delete fp;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道一个更好的,异常安全的解决方案?

c++ iostream exception-handling

48
推荐指数
3
解决办法
5万
查看次数

初始化程序列表和运算符的RHS

我不明白为什么初始化程序列表不能用于运算符的RHS.考虑:

class foo { };

struct bar
{
    template<typename... T>
    bar(T const&...) { }
};

foo& operator<<(foo& f, bar const&) { return f; }

int main()
{
    foo baz;
    baz << {1, -2, "foo", 4, 5};

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

最新的Clang(gcc也)抱怨:

clang.cc:14:9: error: initializer list cannot be used on the right hand side of operator '<<'
    baz << {1, -2, "foo", 4, 5};
    ^  ~~~~~~~~~~~~~~~~~~~~

    ^  ~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

为什么C++标准会禁止这个?或者换句话说,为什么这会失败而不是

baz << bar{1, -2, "foo", 4, 5};
Run Code Online (Sandbox Code Playgroud)

c++ operators initializer-list c++11

41
推荐指数
1
解决办法
4718
查看次数

将lambda函数指定为默认参数

如何将lambda指定为默认参数?我想这样做:

int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })
{
    return f(i);
}
Run Code Online (Sandbox Code Playgroud)

但我的编译器(Mac OS X上的g ++ 4.6)抱怨:

error: local variable 'x' may not appear in this context
Run Code Online (Sandbox Code Playgroud)

编辑:的确,这是一个编译器错误.上面的代码适用于最新版本的gcc(4.7-20120225).

c++ lambda c++11

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

使用Clang和CMake时使用LLVM链接器

告诉CMake使用LLVM链接器llvm-link而不是GNU ld作为链接器的最佳方法是什么?使用时配置项目

CXX=clang++ cmake <args>
Run Code Online (Sandbox Code Playgroud)

默认链接器似乎不受影响,保留usr/bin/ld(在Linux上).

这可能不使用单独的工具链文件吗?

linker cmake clang

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

移动构造函数和多重继承

概要

当类使用多重继承时,如何安全地设计移动构造函数?

细节

请考虑以下情形:

struct T { };
struct U { };

struct X : public T, public U
{
    X(X&& other)
      : T(std::move(other))
      , U(std::move(other)) // already moved?!
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

有没有办法移动 - 构建TU安全?

c++ multiple-inheritance move-constructor move-semantics c++11

15
推荐指数
1
解决办法
1826
查看次数

如何在C++ 14中编写通用转发lambda?

如何在C++ 14中编写通用转发lambda?

试试#1

[](auto&& x) { return x; }
Run Code Online (Sandbox Code Playgroud)

在函数体内部,x是一个左值,所以这不起作用.

试试#2

[](auto&& x) { return std::forward<decltype(x)>(x); }
Run Code Online (Sandbox Code Playgroud)

这正确地转发了lambda中的引用,但它总是按值返回(除非编译器省略了副本).

试试#3

[](auto&& x) -> decltype(x) { return std::forward<decltype(x)>(x); }
Run Code Online (Sandbox Code Playgroud)

这将返回与参数相同的类型(可能-> auto&&也会起作用)并且似乎正常工作.

试试#4

[](auto&& x) noexcept -> decltype(x) { return std::forward<decltype(x)>(x); }
Run Code Online (Sandbox Code Playgroud)

添加是否noexcept使这个lambda更适用,因此严格优于#3?

c++ lambda perfect-forwarding c++14

15
推荐指数
2
解决办法
1094
查看次数

(Im)使用可变参数模板完美转发

概要

给定具有可变参数模板构造函数的类型将参数转发给实现类,是否可以限制使用SFINAE转发的类型?

细节

首先,考虑带有通用引用的构造函数的非变量情形.这里可以禁止通过SFINAE转发非常量左值引用来代替使用复制构造函数.

struct foo
{
  foo() = default;

  foo(foo const&) 
  {
      std::cout << "copy" << std::endl;
  }

  template <
    typename T,
    typename Dummy = typename std::enable_if<
      !std::is_same<
          T,
          typename std::add_lvalue_reference<foo>::type
      >::value
    >::type
  >
  foo(T&& x)
    : impl(std::forward<T>(x))
  {
      std::cout << "uref" << std::endl;
  }

  foo_impl impl;
};
Run Code Online (Sandbox Code Playgroud)

这种通用引用的限制很有用,因为否则实现类将接收类型的非const左值引用foo,它不知道.LWS的完整示例.

但是,如何使用可变参数模板?有可能吗?如果是这样,怎么样?天真的扩展不起作用:

template <
  typename... Args,
  typename Dummy = typename std::enable_if<
    !std::is_same<
        Args...,
        typename std::add_lvalue_reference<foo>::type
    >::value
  >::type
>
foo(Args&&... args)
  : impl(std::forward<Args>(args)...)
{
    std::cout << "uref" …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-functions sfinae variadic-templates c++11

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

拼写文件中的单词字符不同(E763)

概要

我无法解决Vim错误E763:单词字符在拼写文件之间有所不同.

细节

我的.vimrc包括多种拼写语言:

set spelllang=en,de,pt,fr
Run Code Online (Sandbox Code Playgroud)

当第一次运行Vim时,它会提示下载丢失的拼写文件并将其放入.vim/spell.用我上面的配置,这导致了三个文件de.utf-8.spl,fr.utf-8.splpt.utf-8.spl.(英文版附带Vim套装.)

E763的文档提到:

Vim允许您在同一文件中使用多种语言的拼写检查.您可以在'spelllang'选项中列出它们.因此,相同编码的所有拼写文件必须使用相同的单词字符,否则它们无法合并而不会出错.如果您收到单词表不同的警告,则可能需要使用:mkspell再次生成.spl文件.检查使用过的.aff文件中的FOL,LOW和UPP行.

使用"-ascii"参数生成的XX.ascii.spl拼写文件不包含带有字符的表,因此可以将拼写文件与任何编码结合使用..add.spl文件也不包含该表.

似乎我需要重新生成单词表,但这样做的步骤并不直接来自手册.我该怎么办?

vim spell-checking

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

狮身人面像添加图像或图形的链接

我在Sphinx尝试一些相当基本的东西.我有一些图像,但我更喜欢让它们保持很小,我想让用户点击它们来获得更大的图像.我没有找到一种语法结合image:figure:ref:link:.

.. image:: _static/my_image_small.png
Run Code Online (Sandbox Code Playgroud)

我在同一个文件夹中my_image_large.png.

如果您想出一个解决方案,那么较大的图像应该是一个带有显式链接的文件,还是我创建一个带有附加image:标记的reSt文件?另一种方法是使用reSt文件中的图像大小,但后来我仍然不知道如何创建从小图像到大图像的链接.

感谢你们对我的帮助.

python-sphinx

13
推荐指数
1
解决办法
3835
查看次数