我对从这段代码得到的结果感到困惑.在一个dll中,当静态变量初始化时,计数器递增.然后当执行main时我读了这个计数器,但我得到的是0而不是1.有人可以向我解释一下吗?
在我的动态库项目中:
// Header file
class Foo {
int i_ = 0;
Foo(const Foo&) = delete;
Foo& operator= (Foo) = delete;
Foo()
{
}
public:
void inc()
{
++i_;
}
int geti()
{
return i_;
}
static Foo& get()
{
static Foo instance_;
return instance_;
}
Foo( Foo&&) = default;
Foo& operator= (Foo&&) = default;
};
int initialize()
{
Foo::get().inc();
return 10;
}
class Bar
{
static int b_;
};
// cpp file
#include "ClassLocalStatic.h"
int Bar::b_ = initialize();
Run Code Online (Sandbox Code Playgroud)
在我的应用项目中 …
我编译这个简单的代码时遇到错误,如果我删除了noexcept,我没有收到错误:
#include<vector>
#include<string>
class Foo
{
public:
protected:
Foo(Foo&&) noexcept = default;
Foo& operator=(Foo&&) noexcept = default;
Foo()
{
}
private:
std::vector<std::string> vectorFoo_;
};
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误,我理解它是在异常规范的实例化中,但我怀疑std :: string不是不可移动构造,...第一个错误让我觉得有一个bug.
在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4中包含的文件: /usr/local/bin/../lib/c++/v1/vector:575:67:错误:'std :: __ 1 :: is_nothrow_move_constructible中没有名为'value'的成员,std :: __ 1 :: allocator >>> ' NOEXCEPT(is_nothrow_move_constructible ::值); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^包括/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1:包含在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4中的文件:在文件中包括在/usr/local/bin/../lib/c++/v1/vector:264:/usr/local/bin/../lib/c++/v1/__config:325:34:注意:从宏扩展' NOEXCEPT '定义NOEXCEPT(x)noexcept(x)^包含在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1:/ Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError中的文件. h:29:29:注意:在这里请求'vector'的异常规范实例化std :: vector vectorFoo_; ^在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1中包含的文件:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4中包含的文件:在/usr/local/bin/../lib/c++/v1/vector:265中包含的文件中:/usr/local/bin/../lib/c++/v1/__bit_reference:15中包含的文件:In文件包含在/usr/local/bin/../lib/c++/v1/algorithm:624:/ usr/local/bin/..Tp> :: type> ^包含在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1中的文件:包含在/ Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics中的文件/TestCompileError.h:4:/usr/local/bin/../lib/c++/v1/vector:575:20:注意:在模板类'std :: _1 :: is_nothrow_move_constructible的实例化中,std :: __ 1: :allocator >>> '在这里请求 NOEXCEPT(is_nothrow_move_constructible ::值); ^在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1中包含的文件:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4中包含的文件:在/usr/local/bin/../lib/c++/v1/vector:264中包含的文件中:/usr/local/bin/../lib/c++/v1/__config:325:34:注意:扩展从宏' NOEXCEPT '定义 …
我在/ usr/local/bin中构建了lldb树的顶部,我想告诉xcode使用这个二进制文件而不是默认的二进制文件.但我找不到如何/在哪里设置这个.