小编Dan*_*aum的帖子

如何在boost :: filesystem中检查路径是否有效?

我正在boost::filesystem::path编辑字段中设置一个.我注意到构造函数很高兴接受文件名的无效字符.

如何使用boost::filesystem来检查boost::filesystem::path对象是否代表有效的文件名?

c++ boost

7
推荐指数
1
解决办法
8291
查看次数

Git在企业中的软件?

我们正在考虑在我们的团队中使用Git的前景,并希望让很多其他开发团队加入我们.如果一切顺利,我可能会为每个人设置Git.目前我正在测试:

我会喜欢一些关于哪些是好的想法,如果我遗漏了一些我不应该做的事情.

我不太确定我们想要和/或需要什么功能,但我们主要是.NET和Java开发人员,Active Directory身份验证是必须的,JIRA集成会很好.

git github gitorious bitbucket-server gitstack

7
推荐指数
2
解决办法
2185
查看次数

为什么很清楚模板函数实例化不会内联?

关于作为模板参数传递的函数,Ben Supnik提供的社区wiki答案讨论了内联实例化函数模板的问题.

在那个答案是以下代码:

template<typename OP>
int do_op(int a, int b, OP op)
{
  return op(a,b,);
}

int add(int a, b) { return a + b; }

int (* func_ptr)(int, int) = add;

int c = do_op(4,5,func_ptr);
Run Code Online (Sandbox Code Playgroud)

答案继续这样说(关于实例化函数模板的最后一行do_op):

显然这不是内联.

我的问题是:为什么很明显这不是内联的?

c++ templates

7
推荐指数
1
解决办法
1144
查看次数

如何解释C++标准文档中的"术语和定义"?

当我研究C++标准中的不同部分时(我在哪里可以找到当前的C或C++标准文档?),我想回顾一下"术语和定义",§1.3.

但是,术语和定义以我无法充分理解或解释的形式提供,并且在文本中没有给出关于如何解释它们的解释.

考虑标准的"术语和定义"部分中定义的第一个术语:

1.3.1 [ defns.argument ]

争论

实际的论点

实际参数

<function call expression>表达式,以括号括起来的逗号分隔列表

  1. [ defns.argument]指的是什么?
  2. 什么是行的意义和目的actual argument,并actual parameter
  3. 是否<function call expression>指的是不同的"这一术语或定义"?如果是这样,它在"术语和定义"部分中没有定义 - 为什么不呢?如果没有,它指的是什么?(注意:我不是在问"函数调用表达式"是什么意思,因为我已经知道了;相反,我想知道如何使用这个简单的例子来阅读和解释C++标准的"术语和定义"部分.)

c++ standards

7
推荐指数
1
解决办法
171
查看次数

未命名的对象和临时对象是否相同?

在我理解rvalue引用的过程中,我一直在思考编译器何时确定一个特定的函数参数是一个右值引用,以及何时它将它确定为一个左值引用.

(此问题与参考折叠有关;请参阅所请求的参考折叠规则的简明说明:(1)A && - > A&,(2)A &&& - > A&,(3)A &&& - > A&,以及(4)A && && - > A &&).

特别是,我一直在考虑编译器是否总是将未命名对象视为rvalue引用和/或编译器是否始终将临时对象视为rvalue引用.

反过来,这使我怀疑未命名的对象是否等同于临时对象.

我的问题是:未命名的对象总是暂时的; 并且是永远未命名的临时对象?

换句话说:未命名的对象和临时对象是否相同

c++

7
推荐指数
1
解决办法
1193
查看次数

为什么'std :: endl'在语句'std :: cout << std :: endl;"中使用时需要命名空间限定,给定参数依赖查找?

我正在查看关于参数依赖查找的维基百科条目,并且(2014年1月4日)给出了以下示例:

#include<iostream>

int main() 
{
  std::cout << "Hello World, where did operator<<() come from?" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

......有以下评论:

请注意,std :: endl是一个函数,但它需要完全限定,因为它被用作operator <<的参数(std :: endl是函数指针,而不是函数调用).

我的想法是评论不正确(或根本不清楚).我正在考虑更改评论,而不是

请注意,std :: endl需要完全限定,因为ADL不适用于函数调用的参数 ; 它只适用于函数名称本身.

我是否认为维基百科的评论不正确?我建议的改变是否正确?(即,在这个例子中,我对ADL的理解是正确的吗?)

c++ argument-dependent-lookup

7
推荐指数
1
解决办法
377
查看次数

Will Boost.Serialization可以直接使用虚拟钻石继承吗?

我是第一次看Boost.Serialization,我找不到关于虚拟钻石继承结构序列化的明确评估(或说明).

考虑以下类层次结构:

class A { int a; }

class B1 : public virtual A { int b1; }

class B2 : public virtual A { int b2; }

class B3 : public virtual A { int b3; }

class C12 : public virtual B1, public virtual B2 { int c12; }

class C13 : public virtual B1, public virtual B3 { int c13; }

class C23 : public virtual B2, public virtual B3 { int c23; }

class D123 : …
Run Code Online (Sandbox Code Playgroud)

c++ serialization boost

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

如何消除仅由返回类型不同的函数模板的歧义?

我注意到用于区分唯一模板函数的签名与用于区分唯一函数(包括那些从模板函数实例化的函数)的签名之间存在不对称性.

特别是,仅由返回类型不同的模板函数被认为是唯一的,而仅由返回类型不同的函数被认为是冗余的.

因此,我有一个相应的问题,关于如何在实例化之间消除仅由返回类型不同的函数模板之间的歧义:

#include <iostream>

template<typename T>
long foo(T)
{
    std::cout << "long" << std::endl;
    return 0;
}

template<typename T>
char foo(T)
{
    std::cout << "char" << std::endl;
    return '\0';
}

int main()
{
    double d = 0.0;
    long n = foo(d); // <- Ambiguous: How to specify the template function to use?
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,模板函数的实例化foo是模糊的,因为我刚才提到的不对称性.两个模板函数定义的存在是合法的,但实例化是非法的,即使返回类型在同一行代码中指定.

我纯粹是出于理论学习的目的而提出这个问题.也许这种代码构造在现实生活中会成为糟糕设计的标志.也许它永远不会出现在现实生活中.此外,我可以通过更改模板定义(或通过进行其他更改)来设想克服此问题的不同方法.

但是,我仍然想知道,如果保持模板定义不变,可以在实例化时消除这两个模板函数之间的歧义.

c++ templates

6
推荐指数
1
解决办法
1527
查看次数

在Qt中,当事件循环的线程拥有的QObject上的一个槽正在执行时,QThread的事件循环是否阻塞?

我想确认一下我认为Qt中工作线程的直接方面.

假设我创建了一个QThread,其目的是在相应的线程中管理耗时的工作.此外,假设我允许通过调用start()QThread 来运行此线程的相应事件循环.工作本身由一个由QThread started()信号发出信号的成员函数(槽)执行.

那是(从/sf/answers/772745151/复制):

class Task : public QObject
{
Q_OBJECT
public:
    Task();
    ~Task();
public slots:
    void doWork()
    {
        //very time-consuming code is executed here before the next line is reached...
        emit workFinished(); // Calls workFinished() signal (after a long time)
    }
signals:
    void workFinished();
};

// ... in the main thread:
QThread *thread = new QThread( );
Task    *task   = new Task();
task->moveToThread(thread);
connect( thread, SIGNAL(started()), task, SLOT(doWork()) );
connect( task, SIGNAL(workFinished()), thread, …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading event-loop signals-slots

6
推荐指数
1
解决办法
4134
查看次数

如何解释SmartGit Git日志中的分离后向箭头?

我有Git合并的麻烦.

我想问一个关于如何在SmartGit中使用"log"命令查看Git日志时解释箭头/分支历史的问题,而不是询问我遇到的问题.

以下是SmartGit日志的两个屏幕截图.

第一个对我来说是可以理解的,但我把它包括在内,以便阅读这个问题的人看到分支的背景.这显示了分支的当前提示:

分支的一角

这是Git日志的屏幕截图,历史上的某个时间:

在此输入图像描述

我不明白上面屏幕截图中复杂箭头的含义.

以下是我明白:

  • 细红色和蓝色箭头表示尚未提交的合并. 我理解这一点.

这是我明白的:

  • 指向下方的红色箭头代表什么? 为什么它不直接加入它下面的红线?

我可能还有其他问题,这取决于第一个问题的答案.但是,这对我来说是一个充分的问题.

谢谢!

git smartgit

6
推荐指数
1
解决办法
1054
查看次数