我在玩弄type_traits,我发现了这个奇怪的属性std::string:
$ cat a.cpp
#include <string>
#include <type_traits>
static_assert(std::is_nothrow_move_assignable<std::string>::value, "???");
static_assert(noexcept(std::declval<std::string>() == std::declval<std::string>()), "???");
$ g++ -std=c++14 a.cpp
a.cpp:4:1: error: static assertion failed: ???
static_assert(std::is_nothrow_move_assignable<std::string>::value, "???");
^
a.cpp:5:1: error: static assertion failed: ???
static_assert(noexcept(std::declval<std::string>() == std::declval<std::string>()), "???");
^
$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609
Run Code Online (Sandbox Code Playgroud)
然而 cppreference 声称移动赋值运算符和比较运算符被标记为noexcept。
难道我做错了什么?这是一个错误吗?
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |