标签: pod

为什么这不是POD类型?

g++ -std=c++0x pod_test.cpp在g ++ 4.6.2(mingw)上运行了下面的内容.我在A4上收到错误.为什么不是A4 POD?

#include <iostream>
#include <new>
#include <cstring>

using namespace std;

struct A {
    int a, b;
    char c;
};
struct A2 {
    short buf[1];
};
struct A3:A {
};
struct A4:A {
    short buf[1];
};
static_assert(std::is_pod<A>::value, "Struct must be a POD type");
static_assert(std::is_pod<A2>::value, "Struct must be a POD type");
static_assert(std::is_pod<A3>::value, "Struct must be a POD type");
static_assert(std::is_pod<A4>::value, "Struct must be a POD type");

int main(){}
Run Code Online (Sandbox Code Playgroud)

c++ pod c++11

9
推荐指数
1
解决办法
365
查看次数

Xcode,Pods ProjectName.debug.xcconfig无法打开文件。错误的目录

构建项目时,我看到构建错误:ProjectName.debug.xcconfig unable to open file。我不明白我很长一段时间的问题,但今天我拿注意,哪个目录是错误的:完整的错误:projectName/Pods/Pods...ProjectName.debug.xcconfig unable to open file其中Pods部分重复,所以正确的目录必须是projectName/Pods...ProjectName.debug.xcconfig如何解决的呢?

xcode pod

9
推荐指数
3
解决办法
8958
查看次数

如何在DLL边界上公开STL列表?

我有一个DLL,需要访问存储在主机应用程序中的STL容器中的数据.因为C++没有标准的ABI,并且我想支持不同的编译器,所以应用程序和DLL之间的接口基本上必须保持普通的旧数据.

对于向量,这是相对简单的.你可以简单地返回向量的内存块,因为它保证是有条件的:

// To return vector<int> data
virtual void GetVectorData(const int*& ptr, size_t& count) const
{
    if (!vec.empty())
        ptr = &(vec.front());

    count = vec.size();
}
Run Code Online (Sandbox Code Playgroud)

现在,DLL可以通过该接口对向量的数据进行安全的只读访问.DLL也可以包装它以将内容复制到自身的向量中.

那么STL列表(和deques)呢?是否有另一种直接允许通过DLL边界访问的方法?或者我是否必须使用某种GetFirst()/ GetNext()接口?我可能需要为很多列表执行此操作,因此有一个像vector一样简单的解决方案会很好.

c++ stl list abi pod

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

在线Perl POD渲染器

我似乎记得有一个"官方"网站(perl.org或cpan.org),它有一个POD预览器.一个人上传了一个文件,它将显示包含在PAN上的POD.有人有此链接吗?我似乎找不到它.

perl renderer pod preview

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

我用哪个Perl模块将Pod转换为HTML?

我需要将Pod转换为HTML.有许多Pod :: HTML和Pod :: Simple ::*模块.我应该使用哪一个?

html perl pod

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

C++:我如何使用type_traits来确定一个类是否是微不足道的?

在C++ 0x中,我想确定一个类是否是平凡的/具有标准布局,所以我可以使用memcpy(),memset()等...

我应该如何使用type_traits实现下面的代码,所以我可以确认一个类型是微不足道的?

template< typename T >
bool isTrivialType()
{
  bool isTrivial = ???
  return isTrivial;
}
Run Code Online (Sandbox Code Playgroud)

注意:is_pod()限制太多:我希望我的类有简单的构造函数等......为方便起见.

补充:我认为std :: is_standard_layout <>可能会给我我正在寻找的东西.1.如果我添加构造函数,它仍然返回true 2.如果我添加一个虚方法,它返回false这是我需要确定我是否可以使用memcpy(),memset()

编辑:来自Luc Danton的解释和链接(澄清):

struct N { // neither trivial nor standard-layout
   int i;
   int j;
    virtual ~N();
};

struct T { // trivial but not standard-layout
    int i;
private:
    int j;
};

struct SL { // standard-layout but not trivial
    int i;
    int j;
    ~SL();
};

struct POD { // both trivial and standard-layout
    int i;
    int j; …
Run Code Online (Sandbox Code Playgroud)

c++ pod type-traits c++11

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

如何在Perl POD派生的手册页中使用Unicode字符?

如果这是不可能的,处理从UTF-8编码的POD派生的手册页的最佳做法是什么?

要在POD中使用Unicode,要做的第一件事就是使用该指令

=encoding UTF-8
Run Code Online (Sandbox Code Playgroud)

(如所讨论此处).该pod2textpod2html工具将正常工作,并产生完美的UTF-8编码输出.

pod2man但是,该工具不会:

pod2man -u MyModule.pm | nroff -Tutf8 -man | less
Run Code Online (Sandbox Code Playgroud)

也没有perldoc.非ASCII字符都被破坏或X-ed输出.关于perlbug是否可能是一个错误或**roff*,有一些不确定的讨论pod2man.

由于我的模块专门处理Unicode并且打算在CPAN上进行分发,因此必须使用支持Unicode的手册页.

我使用的是Perl 5.14.2,perldoc 3.15和*roff 1.21.

unicode perl manpage pod internationalization

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

默认构造函数应该在具有移动语义的RAII类中执行什么操作?

移动语义对RAII类很有用.它们允许一个人编程,好像一个人有价值语义而没有沉重的副本.一个很好的例子是从函数返回std :: vector.然而,使用值语义进行编程意味着,人们会期望类型的行为类似于原始数据类型.这两个方面有时似乎不一致.

一方面,在RAII中,人们会期望默认构造函数返回完全初始化的对象,或者如果资源获取失败则抛出异常.这可以保证任何构造的对象都处于有效且一致的状态(即安全使用).

另一方面,对于移动语义,当对象处于有效但未指定的状态时存在一个点.类似地,原始数据类型可以处于未初始化状态.因此,使用值语义,我希望默认构造函数在此有效但未指定的状态下创建对象,以便以下代码具有预期的行为:

// Primitive Data Type, Value Semantics
int i;
i = 5;

// RAII Class, Move Semantics
Resource r;
r = Resource{/*...*/}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都希望"重"初始化只发生一次.我想知道,这方面的最佳做法是什么?显然,第二种方法存在一些实际问题:如果默认构造函数在未指定状态下创建对象,那么如何编写一个获取资源的构造函数,但不采用其他参数?(标记调度会浮现在脑海中......)

编辑:一些答案质疑试图让你的类像原始数据类型一样工作的理由.我的一些动机来自亚历山大·斯捷潘诺夫(Alexander Stepanov)的"高效编程与组件"(Efficient Programming with Components),他讲述了常规类型 特别是,让我引用一下:

无论c [内置类型]中的自然惯用表达是什么,都应该是常规类型的自然惯用表达式.

他继续提供与上面几乎相同的例子.他的观点在这方面是否有效?我理解错了吗?

编辑:由于没有太多的讨论,我即将接受最高投票的答案.在默认构造函数中以"从 - 移动状态"状态初始化对象可能不是一个好主意,因为每个同意现有答案的人都不会期望这种行为.

c++ raii pod move-semantics c++11

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

C++中的引用类型是POD类型吗?

C++中的引用类型也是POD类型吗?是int&POD类型吗?那怎么样?

struct Q { int& i; }
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

c++ pod

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

MSVC12认为从std :: array派生的聚合不是pod

鉴于以下内容

#include <array>

struct litmus final : std::array<unsigned char, 16>
{
};

static_assert(std::is_pod<std::array<unsigned char, 16> >::value, "not pod");

// this fails on MSVC:
static_assert(std::is_pod<litmus>::value, "not pod");
Run Code Online (Sandbox Code Playgroud)

以下编译器同意litmuspod:

但是,MSVC12(VS2013 RTM)认为第二个断言失败.

  1. 谁是对的?
  2. 是否有任何技巧可以让MSVC将该类视为pod?

编辑有关信息:is_trivially_copyable<litmus>在MSVC上返回true-ness.对于许多不严格要求实际POD的情况,这可能很有用.

c++ static-assert pod visual-c++

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