我目前正在阅读一些书籍以了解c ++ 14的功能.我试图使用可变参数模板将参数绑定到函数.我知道如何使用std :: bind执行此操作,但我还想使用c ++ 14 lambda表达式实现此函数,仅用于常识和理解,以及任何可能的性能优势.我已经读过lambdas可以内联而std :: bind不能内联,因为它是通过调用函数指针来实现的.
以下是myFunctions.h的代码:
#include <functional>
int simpleAdd(int x, int y) {
return x + y;
}
//function signatures
template<class Func, class... Args>
decltype(auto) funcBind(Func&& func, Args&&...args);
template<class Func, class... Args>
decltype(auto) funcLambda(Func&& func, Args&&...args);
/////////////////////////////////////////////////////////////////
//function definitions
template<class Func, class... Args>
inline decltype(auto) funcBind(Func&& func, Args&&... args)
{
return bind(forward<Func>(func), forward<Args>(args)...);
}
template<class Func, class ...Args>
inline decltype(auto) funcLambda(Func && func, Args && ...args)
{ //The error is caused by the lambda …Run Code Online (Sandbox Code Playgroud) 我正在与 Visual Studio Community 2015 中的其他几个人一起开发 C++ 项目,我们希望使用 VS2015 的内置 git 功能来管理我们的项目。我们希望每个用户在他们的笔记本电脑上都有一个本地 git 存储库,然后在我们推/拉到/从的网络驱动器上放置一个远程存储库。我想使用 VS2015 的内置 git 功能了解此特定设置的正确工作流程。我们不想使用 VS online 或 Team Foundation 版本控制或 git 的命令行版本(由于我们的工作性质,我们将无法访问互联网,也无法访问命令行提示符)。
我已经尝试了几件事来让它在没有任何运气的情况下工作。
首先我在VS2015中打开解决方案,然后点击file -> add to source control -> git,这就创建了一个本地仓库。然后我将我的文件提交到本地存储库。到目前为止没有问题。
接下来我想在网络驱动器上创建一个远程存储库。在项目的团队资源管理器中,我单击同步,它会询问空 git 存储库的 URL。我在网络驱动器上输入了我希望它使用的文件夹,但收到一条错误消息,提示它找不到存储库,可能是因为该文件夹为空。也许我错过了它,但似乎没有办法在 VS2015 中创建一个空的 git repo。
因此,为了尝试创建一个空的 git 存储库,我导航到文件-> 新建-> 存储库,然后在网络驱动器上的文件夹中创建 git 存储库。我认为将其输入到同步 -> URL 中,我得到一个不同的错误。此错误表示本地推送尚不支持推送到非裸存储库。在 VS2015 中创建新存储库似乎不会创建空存储库。
接下来,我尝试将我的本地存储库位置克隆到网络驱动器文件夹位置,这很有效。然后我转到我的本地存储库设置,并将远程存储库添加到遥控器,它现在显示在分支资源管理器窗口中。然后我对我的代码进行更改,转到更改,然后选择提交和推送。这次我又收到一个错误:“无法推送,因为当前分支没有跟踪远程分支,请将更改发布到远程。” 当我右键单击本地主分支时,发布选项是灰色的,因此我无法发布它。
为了解决这个问题,我右键单击远程/主分支,然后选择新的本地分支,并选择“跟踪远程分支(使用远程/主进行推和拉配置)”选项。我将这个分支命名为 local_master,它现在是一个已发布的分支。我假设我上面选择的选项现在允许我将更改从我新发布的 local_master 分支推送和拉取到 remote/master 分支。当我对 local_master 进行更改,提交,然后尝试推送时,我反而收到此错误:“本地推送(尚)不支持推送到非裸存储库。” 然后我右键单击 remote/master 分支并尝试从我的 local_master 合并到 remote/master,这表明它工作成功,但我的代码更改不在 remote/master 中。
我花了将近 8 个小时试图让它发挥作用并研究其他解决方案,但没有成功,我的智慧快要结束了。有人知道如何在网络驱动器上创建远程存储库,然后使用 VS2015 中的内置 git 控件从本地存储库推/拉到远程存储库吗?