小编Mik*_*han的帖子

为什么在其他函数中声明的函数不参与参数依赖查找?

考虑一个简单的例子:

template <class T>
struct tag { };

int main() {
    auto foo = [](auto x) -> decltype(bar(x)) { return {}; };
    tag<int> bar(tag<int>);
    bar(tag<int>{}); // <- compiles OK
    foo(tag<int>{}); // 'bar' was not declared in this scope ?!
}

tag<int> bar(tag<int>) { return {}; }
Run Code Online (Sandbox Code Playgroud)

[GCC][铛]拒绝编译代码.这段代码在某种程度上是不正确的吗?

c++ templates language-lawyer argument-dependent-lookup c++14

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

在C++中使用Exceptions的可能的错误处理策略是什么,它们的后果和含义是什么?

我希望您能帮助理解在C++中使用/禁用异常的可能方法.

我的问题不是关于什么是最佳选择,而是关于什么是可能的选择以及这些选项意味着什么.

目前,我能想到的选择是:

  1. 使用-fno-exceptions进行编译并放弃大多数std容器(可能定义不抛出的内部容器,例如SpiderMonkey Coding_Style中建议的)
  2. 只是避免抛出并捕获自己的代码,但仍然使用可能抛出异常的std容器.对于这样的事实感到高兴,在例外的情况下,程序可以在没有堆栈展开的情况下终止,并且甚至RAII处理的外部资源也可能被搁置.(根据这个SO问题的答案,这似乎是Google C++方法)
  3. 没有使用异常但是将所有std :: exception try块包装起来只是为了确保堆栈被解除并且在程序终止之前释放对外部资源的RAII句柄,就像这个Cert C++规则一样
  4. 如上所述,但也会抛出异常,最终导致程序终止.
  5. 还使用catched异常并从异常中恢复.

我想知道我对选项的理解是否正确,以及我可能错过了什么或理解错误.

我还想知道给予基本异常安全的限制是否适用于选项2-4(异常总是最终导致程序终止)或者异常安全要求是否/如何放宽/限制于特定情况(例如处理外部资源) ,文件).

c++ exception-handling

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

如何在编译时交换可变参数模板的两个参数?

我正在尝试在编译时交换可变参数模板的两个参数:

 template<int...Numbers>struct sequence{};

template<size_t first,size_t second>
struct Swap_Pair
{
    const static size_t First = first;
    const static size_t Second = second;
};

template <int...Numbers,class swap_pair>
struct Swap_Data
{
    static std::array<int, sizeof...(Numbers)> data_;//How to swap Numbers base on the pair and store it in data_ ?
};
Run Code Online (Sandbox Code Playgroud)

用例应该是:

sequence<1, 2, 3, 4, 5, 6> array;
auto result = Swap_Data < array, Swap_Pair<2, 5> > ::data_;
//result is now std::array which contains 1 2 6 4 5 3 
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚什么是正确的写作方式Swap_Data.

我如何进行递归交换以交换可变参数并在编译时转换为std …

c++ templates metaprogramming variadic-templates c++11

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

有没有一个很好的理由为什么1f不是一个有效的浮点字面值?

在很多语言中,如C#和D,1f是一种声明浮点文字的有效方法,但在C++中,默认情况下最接近的是1.f1.0f.但是,可以使用C++ 11的用户定义的文字运算符来实现此行为(即使它涉及打破"用户定义的文字的下划线"规则).下面的程序(至少在g ++ 4.9.2中)按预期工作,所以我想知道1f在C++中默认情况下浮点文字的有效语法是否有正当理由.

#include <iostream>
#include <typeinfo>

constexpr float operator""f(unsigned long long int i){
    return static_cast<float>(i);
}

int main(){
    auto f1 = 1f;
    auto f2 = 1.f;

    if(typeid(f1) == typeid(f2))
        std::cout << "They're the same" << std::endl;

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

c++ c++11

6
推荐指数
0
解决办法
134
查看次数

gcc"多重定义"错误

所以我有这三个文件

MAIN.C

#include <assert.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include "support.h"

int main( void ) {
    int* num1 = malloc(100);
    printf("num1: %p", &num1);
}
Run Code Online (Sandbox Code Playgroud)

Support.c

#include <assert.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include "support.h"

void *malloc(size_t size) {
    struct block_meta *block;
    if (size <= 0) {
        return NULL;
    }
    if (!global_base) { // First call.
    block = request_space(NULL, size);
        if (!block) {
            return NULL;
        }
        global_base = block;
    } else {
        struct block_meta *last = global_base; …
Run Code Online (Sandbox Code Playgroud)

c gcc

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

字符串文字串联的正确行为(C++ 11翻译阶段6)

我很确定Visual C++ 2015在这里有一个bug,但我并不完全确定.

码:

// Encoding: UTF-8 with BOM (required by Visual C++).
#include <stdlib.h>

auto main()
    -> int
{
    auto const s = L""
        " is not in the Unicode BMP!";
    return s[0] > 256? EXIT_SUCCESS : EXIT_FAILURE;
}
Run Code Online (Sandbox Code Playgroud)

使用g ++的结果:

[H:\scratchpad\simple_text_io]
> g++ --version | find "++"
g++ (i686-win32-dwarf-rev1, Built by MinGW-W64 project) 6.2.0

[H:\scratchpad\simple_text_io]
> g++ compiler_bug_demo.cpp

[H:\scratchpad\simple_text_io]
> run a
Process exit code = 0.

[H:\scratchpad\simple_text_io]
> _

Visual C++的结果:

[H:\scratchpad\simple_text_io]
> cl /nologo- 2>&1 | …

c++ g++ visual-c++

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

如何在React Native App中直接发送电子邮件

我正在关于功能:直接从React本地App发送电子邮件到gmail地址.我在互联网上搜索并尝试了库:https://github.com/anarchicknight/react-native-communications,https://github.com/chirag04/react-native-mail.Howerver,他们只显示我在我的设备中安装的Gmail应用程序的视图.我想反应本机应用程序将直接发送到地址电子邮件.我测试的设备在Android平台上运行.非常感谢

action sendmail reactjs react-native

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

CocoaPods:使用静态库进入 Pod

我有一个依赖于静态库的 pod(预编译,源代码不可用)。

在这个 pod 项目中,我拖放包含“.a”文件和其他一些 C、Obj-c 文件的文件夹。

当我尝试将这个 pod 包含在应用程序中时,Cocoapods 会复制所有 pod 文件而不是“.a”文件。

在 Podspec 中,我使用它来将预编译库包含到我的 Pod 中

  s.ios.vendored_frameworks = 'path/a_staticLib.a'
Run Code Online (Sandbox Code Playgroud)

上面的行将文件复制到框架(Pods 文件夹)中,这是正常的,因为它被称为“vendored_frameworks”,但我找不到任何使用静态库的解决方案。

我的错误:

ld: framework not found -framework
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

谢谢你。

xcode dependencies static-libraries ios cocoapods

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

使用 gcloud 停止当前版本的应用引擎的推荐方法是什么?

我想通过运行 bash 脚本来自动启动/停止我们的应用引擎服务。

我知道它很容易运行gcloud app versions start/stop,但我不想手动检查版本号。我想将提供 100% 流量的版本动态传递给 gcloud 并告诉它停止。

另一方面,我还想告诉 gcloud 启动最近部署的版本。

推荐的方法是什么?

谢谢!

google-app-engine gcloud

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

如何实现类似std :: copy_if之类的东西,但在插入另一个容器之前应用一个函数

完全公开,这可能是在没有需要时尝试使用STL算法的锤子和钉子情况.我在一些C++ 14代码中看到了一个重新出现的模式.我们有一个迭代的容器,如果当前元素匹配某些条件,那么我们将其中一个元素字段复制到另一个容器.

模式类似于:

 for (auto it = std::begin(foo); it!=std::end(foo); ++it){
    auto x = it->Some_member;
    // Note, the check usually uses the field would add to the new container. 
    if(f(x) && g(x)){ 
      bar.emplace_back(x);
    }
  }
Run Code Online (Sandbox Code Playgroud)

这个想法几乎是一个累积,其中所应用的函数并不总是返回一个值.我只能想到一个解决方案

这甚至是个好主意吗?

c++ stl c++14

6
推荐指数
2
解决办法
270
查看次数