给定一个具有两个构造函数的类A,取initializer_list< int>和initializer_list< initializer_list< int>>分别 A v{5,6}; 打电话给前者,和 A v{{5,6}}; 呼吁后者,如预期. (clang3.3,显然gcc的行为有所不同,看到答案,标准要求什么?) 但是如果我删除第二个构造函数,那么A v {{5,6}};仍然编译,它使用第
我很好奇C的内置bool类型的一些行为.据我所知, std::common_type使用隐式可转换性来确定通用类型.我会期望一个表达式与bool和另一种类型会导致bool转换为该类型.例如,我可以看到bool float – > float和bool double – >双.但是,bool int8_t – > int32_t和bool int16_t – > int32_t.为什么会这样? 简答
我试图建立一些启发式来帮助我决定使用适当的std ::线程类. 据我所知,从最高级别(最简单易用,但最不灵活)到最低级别,我们有: > std :: async with / std :: future(std :: shared_future)(当你想在一次性抛出的生产者线程异步时执行) > std :: packed_task(当你想要分配一个生产者,但是延迟对线程的调用) > std ::
我试图使用一个lambda代替一个函数指针,但VS2010似乎不能转换它.我试过使用这样的std ::函数,它崩溃,我不知道如果我这样做正确! #include <windows.h>
#include <conio.h>
#include <functional>
#include <iostream>
#include <concrt.h>
void main()
{
std:
以下示例是否编译? struct B;
struct A
{
A(B*&&){}
};
struct B : A
{
B() : A(this){}
};
int main(){} 在LWS与clang它编译,但与gcc我得到: no known conversion for argument 1 from ‘B* const’ to ‘B*&&’ 如果我添加一个const它编译. 我
我正在为演员运用新的显式.如果你写的东西 struct Data {
explicit operator string();
}; 不可能将数据意外转换为字符串. darget数据类型bool是一个例外:在某些情况下,即使将其标记为显式 – 上下文转换,也允许隐式转换.因此,您可以在if(…)中使用此类型的数据,例如: struct Ok {
explicit operator
我有代码: struct A {
int a;
};
struct B {
int b;
const A a[2];
};
struct C {
int c;
const B b[2];
};
const C test = {0, {}};
int main()
{
return test.c;
} 我有gcc 4.8.2和4.9.2.它可以
我这里有这段代码. #include <iostream>
using namespace std;
template <typename T> inline T bigArry(const T data[5])
{
T level = data[0];
for(T item : data) // error C2143: syntax error : missing ',' b
我正在处理一个事件库,而我正在面对Variadic模板的问题. 所有的工作非常好,除了我不能传递引用作为参数的事实… 这是一个非常简化的例子,用来揭示我的问题. struct DelayedSignal
{
~DelayedSignal ()
{ std::cout << "~DelayedSignal CLOSE" << std::endl; }
templat
我想使用std :: tuple的所有元素作为类的初始化.有没有比元组的每个元素执行std :: get< i-th element>(std :: tuple)更简单的方法? 最小工作示例与std :: get: #include <string>
#include <tuple>
#include <cassert>
struct A
{
std::string string1;
从析构函数中抛出异常的主要问题是,在析构函数被调用的时刻,另一个异常可能是“in flight”(std :: uncaught_exception()== true),因此在这种情况下不太明显.用新的例外覆盖旧的例外将是处理这种情况的可能办法之一.但是,在这种情况下,必须调用std :: terminate(或另一个std :: terminate_handler). C 11通过std ::
在5.1.1 / 3的C标准[expr.prim.general] Unlike the object expression in other contexts, *this is not required to be of complete type for purposes of class member access outside the member function body. Onl
什么时候建立相对于非constexpr非静态存储持续时间的非本地对象的constexpr对象?在任何其他对象的初始化之前,即在动态初始化之前,他们是否开始生活? 我正在考虑使用一个string_literal class (live example)是否合理,例如比较std :: strings与某些关键字: class string_literal
{
// private member
我正在读 this answer,作者指的是 boost best practices,其中说: Avoid using unnamed shared_ptr temporaries to save typing; to see why this is dangerous, consider this example: void f(shared_ptr<int>, int);
int g();
许多C11 CAS操作(例如,atomic_compare_exchange_weak,atomic_compare_exchange_strong)取两个指针和一个值,即: bool atomic_compare_exchange(T* pointer, T* expected, // pseudodeclaration!
T
我正在编写一个C代码,需要访问一个使用timeval作为当前时间表示的旧C库. 在旧包中获取我们使用的当前日期/时间: struct timeval dateTime;
gettimeofday(&dateTime, NULL);
function(dateTime); // The function will do its task 现在我需要使用C计时器,如: system_clock::t
这是这个场景:我想要一个主机类,它可以有一个可变数量的混合(不是太多的可变模板 – 参见例如 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.144).但是,我也希望由主机类参数化mixins,以便它们可以引用它的公共类型(使用CRTP成语). 当尝试混合这两个问题时出现问题 – 正确的语法对我来说不清楚. 例如,以下代码无法
这个非常简单的代码代码在 GCC 6.0中出现错误: template<class T>
struct S {
// error: cannot convert 'T' to 'const int' in initialization
static const int b = T{};
};
int main() {
} 奇怪的是,如果我使用常规大括号(T()),那么代码编译.这
考虑比较正整数的函数;该函数本身使用lambda来做这个工作. // Pass n1, n2 by value to the lambda.
bool Compare(int n1, int n2) {
return [](int n1, int n2) { return n1 > n2; };
} 上面的代码段编译好了虽然Compare()总是返回true; 但是,以下代码甚至无法编译
在用“for”循环替换了很多“旧”循环之前,我用visual studio 2013进行了一些测试: std::vector<int> numbers;
for (int i = 0; i < 50; ++i) numbers.push_back(i);
int sum = 0;
//vectorization
for (auto number = numbers.begin(); numb