小编Fro*_*art的帖子

#pragma一旦编译器支持

有人可以告诉我一个#pragma once针对各种编译器的指令支持的解决方法吗?

我想在我的标题中使用类似于:

#if _MSC_VER > ... || __GNUC__ > ... || ...

#pragma once

#endif
Run Code Online (Sandbox Code Playgroud)

也许它已存在于boost源或代码中?

c c++ pragma

8
推荐指数
2
解决办法
9983
查看次数

模板复制构造函数

鉴于以下代码,Foo有复制构造函数吗?将Foo与STL容器一起使用是否安全?

class Foo
{
public:
   Foo() {}

   template <typename T>
   Foo(const T&) {}   
};
Run Code Online (Sandbox Code Playgroud)

c++

8
推荐指数
1
解决办法
1411
查看次数

C++中的运算符调用语法

是否存在语法的情况

if (first == second) // ...
Run Code Online (Sandbox Code Playgroud)

有什么不同?

if (first.operator==(second)) // ...
Run Code Online (Sandbox Code Playgroud)

我不这么认为,但只是想知道它.

c++ operators comparison-operators

8
推荐指数
2
解决办法
160
查看次数

__func__ C和C++之间的值差异

我是否正确C标准保证_ _ func _ _ value始终是封闭函数的名称,而在C++中(我的意思是C++ 11),它可以是任何实现定义的字符串(例如,如果我们有没有参数的函数foo,我们可以得到像"Some string fdgdg asdfs fsdf sd"这样的东西?

ISO/IEC 9899:2011

6.4.2.2预定义标识符

语义

1标识符_ _ func _ _应由翻译器隐式声明,就像紧跟在每个函数定义的左括号之后的声明static const char _ func _ [] ="function-name"; 出现了,其中function-name是词法封闭函数的名称.

ISO/IEC 14882:2011

8.4.1一般[dcl.fct.def.general]

8函数本地预定义变量_ _ func _ _被定义为形式为static const char _ _ func _ _ [] ="function-name"的形式的定义; 已提供,其中function-name是实现定义的字符串.未指定此变量的地址是否与程序中任何其他对象的地址不同.

这是什么原因?如果我们无法接收当前的功能名称,请返回类似"未知"的内容?

c c++ c99 c++11 c11

8
推荐指数
1
解决办法
1085
查看次数

通过价值和不同的行为

在使用gcc 4.7.2和MSVC-11.0进行编译时,为什么以下代码会提供不同的输出?

#include <iostream>

class Base
{
public:
    Base()
    {
        std::cout << "Base::Base() \n";
    }

    ~Base()
    {
        std::cout << "Base::~Base() \n";
    }
};

class Derived : public Base
{
public:
    Derived()
    {
        std::cout << "Derived::Derived() \n";
    }

    ~Derived()
    {
        std::cout << "Derived::~Derived() \n";
    }
};

void foo(Base) {}

int main()
{
    Derived instance;
    foo(instance);
}
Run Code Online (Sandbox Code Playgroud)

gcc 4.7.2

基地:: Base的()

衍生::派生()

基地::〜基地()

衍生::〜衍生()

基地::〜基地()

MSVC-11.0

基地:: Base的()

衍生::派生()

基地::〜基地()

基地::〜基地()

为什么MSVC-11.0不打印第二Derived::~Derived()

https://ideone.com/NF9FQf

c++

8
推荐指数
1
解决办法
219
查看次数

在boost :: lockfree:queue默认构造函数的情况下断言失败

我该如何使用boost::lockfree:queue物体?

我正在尝试编写一个通过默认构造函数构造此类对象的应用程序,但它在boost源中给出了一个断言失败:

BOOST_ASSERT(has_capacity);
Run Code Online (Sandbox Code Playgroud)

如何使用此类的默认构造函数?我是否需要通过模板参数指定队列的大小?

c++ boost lock-free

8
推荐指数
1
解决办法
2854
查看次数

我可以在Swift的一行中以某种方式对多个变量使用可选绑定吗?

我可以在Swift的一行中以某种方式对多个变量使用可选绑定吗?我需要做这样的事情:

if let foo = fooOptional && let bar = barOptional {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

ios swift

8
推荐指数
2
解决办法
2786
查看次数

如何在名称中使用正斜杠创建标记

当我已经拥有类似外观的git标签时,有没有办法在其名称中创建带正斜杠的git标签?

假设我有"1.16.0"标签,我想创建"1.16.0/1.0.0"标签:

$ git tag "1.16.0/1.0.0"
error: 'refs/tags/1.16.0' exists; cannot create 'refs/tags/1.16.0/1.0.0'
fatal: refs/tags/1.16.0/1.0.0: cannot lock the ref
Run Code Online (Sandbox Code Playgroud)

tags git git-tag

8
推荐指数
1
解决办法
868
查看次数

__reduce__ 函数如何在pickle 模块的情况下准确工作?

我不明白__reduce__函数pickle在 Python 模块的情况下是如何工作的。

假设我有以下课程:

class Foo(object):
  def __init__(self, file_name = 'file.txt'):
    self.file_name = file_name
    self.f = open(self.file_name, 'w')
Run Code Online (Sandbox Code Playgroud)

它不能被腌制,因为pickle模块不知道如何编码文件句柄:

foo = Foo()
print(pickle.dumps(foo))
Run Code Online (Sandbox Code Playgroud)

输出:

class Foo(object):
  def __init__(self, file_name = 'file.txt'):
    self.file_name = file_name
    self.f = open(self.file_name, 'w')
Run Code Online (Sandbox Code Playgroud)

但是如果我添加__reduce__它成功编码的函数:

import pickle

class Foo(object):
  def __init__(self, file_name = 'file.txt'):
    self.file_name = file_name
    self.f = open(self.file_name, 'w')

  def __reduce__(self):
    return (self.__class__, (self.file_name, ))

foo = Foo()
print(pickle.dumps(foo))
Run Code Online (Sandbox Code Playgroud)

输出:

foo = Foo()
print(pickle.dumps(foo))
Run Code Online (Sandbox Code Playgroud)

__reduce__如果 …

python serialization pickle

8
推荐指数
1
解决办法
4360
查看次数

在运算符new和"嵌套"初始化的情况下,实现应该做什么

我知道如果对象的构造函数在这样的情况下抛出异常,则实现应释放任何已分配的内存:

new T(); // Suppose that T() throws an exception
Run Code Online (Sandbox Code Playgroud)

但是下面的代码怎么样?

new T(f()); // Suppose that T() does NOT throw any exception, but f() does
Run Code Online (Sandbox Code Playgroud)

在这种情况下应该执行什么?它应该释放任何分配的内存吗?

c++

8
推荐指数
1
解决办法
98
查看次数

标签 统计

c++ ×7

c ×2

boost ×1

c++11 ×1

c11 ×1

c99 ×1

comparison-operators ×1

git ×1

git-tag ×1

ios ×1

lock-free ×1

operators ×1

pickle ×1

pragma ×1

python ×1

serialization ×1

swift ×1

tags ×1