c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
在下面的课程中, 为什么要让运算符明确.我认为明确是为了防止对构造函数的隐式调用? class Content { public: virtual ~Content() = 0; virtual explicit operator float&(); virtual explicit operator long long&(); virtual explicit
下面的长显式初始化列表是否可以被生成它的某个模板替换? std::array<Foo, n_foos> foos = {{ {0, bar}, {1, bar}, {2, bar}, {3, bar}, {4, bar}, {5, bar}, {6, bar}, {7,
我有一个类,其构造函数采用一些向量并存储它们. struct X { X(std::vector<int> const& ints, std::vector<float> const& floats, std::vector<std::string> const& strings) : ints_{ints} , floats_{floats} , strings_
请考虑以下代码段: struct Base { virtual void func() { } }; struct Derived1 : Base { void func() override { print("1"); } }; struct Derived2 : Base { void func() override { print("2"); } }; class Manager {
我正在使用Cygwin编译一个项目(GCC v4.5.0),我遇到了奇怪的链接器问题.我希望有一些专业知识的人可以提供帮助. Error: undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char
我递归地调用一个函数作为参数传递一个子串,它始终从当前字符串的开头一直到一个位置.如果我使用C,我可以将指针传递给字符串的第一个位置,然后是必要的长度.不过,我想使用类字符串实现相同的结果.可能吗?如果我使用const,编译器是否足够聪明,可以自行进行优化?更好的是,有没有办法自行检查编译器是否实际复制了参数或传递了引用? 我的问题是在编写了下面的代码后得到了激励,该代码在poj上通过问题Alph
对于C 11中的Packaged_Task实现 我希望实现我在下面的C 14代码中所表达的内容.换句话说,我想转发一个lambda表达式. template<class F> Packaged_Task(F&& f) { Promise<R> p; _future = p.get_future(); auto f_holder = [f = std::forward<F
#include <iostream> union gc_bits { size_t value; struct { size_t arena : 2; } bits; constexpr gc_bits(size_t value_) : value(value_) { } }; static constexpr size_t get_
以下代码有什么问题?运行时,程序以未知异常中止 #include <iostream> #include <future> int main() { auto promise = std::promise<int>{}; auto future_one = promise.get_future(); promise.set_value(1); return 0;
这个程序合法吗? struct X { X(const X &); }; struct Y { operator X() const; }; int main() { X{Y{}}; // ?? error } 在n2672之后,经过defect 978修订,13.3.3.1 [over.best.ics]具有: 4 – However, when considering the arg
我有一个类,看起来像这样: template<typename T> using VectorPtr=std::vector<std::unique_ptr<T>>; template<typename T> using VectorRawPtr=std::vector<T*>; class ItemsSet{ // <-- Compiler say this
如果我有 std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now(); 变量,如何定义另一个time_point变量t2,使其在t1之后正好表示一秒的时间点? 像auto t2 = t1“1s”之类的东西.我该怎么用“1s”替换? 如果您使用的是C 14(VS-2015,或-std = c 14 with
我仍然是C的新手,还有很多需要学习的东西,但我最近变得非常依旧的是使用嵌套(多维)向量.所以我通常会得到这样的东西: std::vector<std::vector<std::string> > table; 然后,我可以轻松访问这样的元素: std::string data = table[3][5]; 然而,最近我得到的印象是(在性能方面)更好地拥有一维向量,然后只使用“索引算术”来相应地访问
元组有点像 like structs.是否还有像工会一样的元组?或者我可以在元组中访问成员的工会,例如 my_union_tuple<int, char> u; get<1>(u); get<int>(u); // C++14 only, or see below 第二行见here. 当然,解决方案不仅适用于特定的联合,例如< int,char>,而且适用于任意类型和数量的类型. 没有std ::
非成员函数模板是否开始(容器)和结束(容器)是C 0x的一部分?如果是这样,他们居住在哪个头文件中? 是的,但正如交换在不同的地方定义并依赖于ADL一样,开始和结束也是如此. ‘通用’版本在< iterator>中定义: // 24.6.5, range access: template <class C> auto begin(C& c) -> decltype(c.begin()); temp
我已经下载了一个在GCC中ABI更改之前使用 gcc 4.8编译的库. 在我的笔记本电脑上(最新的kubuntu)我有GCC 5.2.当我安装boost时,似乎它使用了新的ABI,但后来我得到了以下链接错误 未定义的符号…..__ cxx11 …. 如何使用旧的ABI和GCC5安装boost? 据我所知,在官方Kubuntu存储库中没有针对旧ABI的预构建Boost包,因此您必须自己构建Boost
是否有类型特征(或概念)来识别以下哪些类型是安全的? template <typename T> std::enable_if_t<std::some_type_trait<T>::value> Write(std::ostream &os,const T &x) { os.write(reinterpret_cast<const char *>(&x),sizeof(T)); } temp
在 PHP中,我们有一个整洁的关键字,允许在使用闭包时使用“外部”变量,如下所示: $tax = 10; $totalPrice = function ($quantity, $price) use ($tax){ //mandatory 'use' return ($price * $quantity) * ($tax + 1.0); }; 如果我们省略使用($tax)部分,它会抛出一
有人能提供c应用程序中std :: this_thread :: yield()用法的真实例子吗? 我在std :: lock的实现中使用了yield,在这里找到: http://llvm.org/svn/llvm-project/libcxx/trunk/include/mutex 事实证明,当一次锁定多个锁/互斥锁时,如果未能获得一个锁/互斥锁,则可以在以不同顺序尝试锁/互斥锁之前使用yiel
C 11的新机型允许多处理器系统可靠地工作,wrt.重组指令. 正如Meyers和Alexandrescu所指出的那样,C 03中的“简单”双重锁定模式的实现是不安全的 Singleton* Singleton::instance() { if (pInstance == 0) { // 1st test Lock lock; if (pInstance == 0) { //