编译此简单代码时出现错误,如果删除 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_;
};
这是我得到的错误,我知道它是在异常规范的实例化中,但我怀疑 std::string 不是可构造的,..第一个错误让我认为有一个错误。
在 /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, std::__1::allocator > > > ' 除了(is_nothrow_move_constructible::value); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 在文件中包含在 /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:注意:在此处要求 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 中包含的文件中:在文件包含在 /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::value); ^ 在/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:注意:在此处要求 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:582:58: 错误: 'std::__1::is_nothrow_move_assignable, std::__1::allocator >> >' is_nothrow_move_assignable::value);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:注意:在此处请求的 'operator=' 的异常规范的实例化中 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 中包含的文件中:在文件包含在 /usr/local/bin/../lib/c++/v1/algorithm:624: /usr/local/bin/.. /lib/c++/v1/type_traits:2760:45: 注意:在模板类 'std::__1::add_lvalue_reference, std::__1::allocator > > >' 的实例化中:public is_nothrow_assignableTp>::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:582:14: 注意:在模板类 'std::_1::is_nothrow_move_assignable, std::__1::allocator > > >' 的实例化中此处请求 is_nothrow_move_assignable::value); ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中: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:注意:在此处请求的 'operator=' 的异常规范的实例化中 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 中包含的文件中:在文件包含在 /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::value); ^ 在/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:注意:在此处要求 std::vector vectorFoo_ 的“向量”的异常规范的实例化中;
我的编译器从树顶发出叮当声。我究竟做错了什么?
谢谢
更新 Coliru 上的错误。如果我不指定 libc++ 而是使用 stdlibc++ 它会编译。它开始看起来很像 libc++ 中的错误。