小编fre*_*low的帖子

ADL的缺陷是什么?

前段时间我读了一篇文章解释了参数依赖查找的几个缺陷,但我再也找不到了.它是关于获取您不应该访问的东西或类似的东西.所以我想我会在这里问:ADL的缺陷是什么?

c++ namespaces overload-resolution argument-dependent-lookup

50
推荐指数
2
解决办法
4053
查看次数

decltype和括号

我不明白FCD第148页上的例子的最后一行(§7.6.1.2/ 4):

const int&& foo();
int i;
struct A { double x; };
const A* a = new A();
decltype(foo()) x1 = i;     // type is const int&&
decltype(i) x2;             // type is int
decltype(a->x) x3;          // type is double
decltype((a->x)) x4 = x3;   // type is const double&
Run Code Online (Sandbox Code Playgroud)

为什么括号在这里有所作为?它不应该只是double像上面那样吗?

c++ type-inference decltype c++11

50
推荐指数
3
解决办法
3617
查看次数

在常量表达式中除以零

如果我在常量表达式中除以零,我的玩具编译器会崩溃:

int x = 1 / 0;
Run Code Online (Sandbox Code Playgroud)

C和/或C++标准是否允许这种行为?

c c++ compile-time-constant divide-by-zero constant-expression

43
推荐指数
3
解决办法
4102
查看次数

包私有类中的公共方法

将方法标记为public包私有类是否有所不同?

class SomePackagePrivateClass
{
    void foo();          // package private method

    public void bar();   // public method
}
Run Code Online (Sandbox Code Playgroud)

这之间foobar这里的可见度是否存在实际差异?

java methods visibility package public-method

42
推荐指数
6
解决办法
2万
查看次数

Locks AutoCloseable?

Locks AutoCloseable?也就是说,而不是:

Lock someLock = new ReentrantLock();
someLock.lock();
try
{
    // ...
}
finally
{
    someLock.unlock();
}
Run Code Online (Sandbox Code Playgroud)

我能说......么:

try (Lock someLock = new ReentrantLock())
{
    someLock.lock();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在Java 7中?

java resources resource-management locks java-7

42
推荐指数
4
解决办法
1万
查看次数

从int转到float并返回时,符号会发生变化

考虑以下代码,这是我实际问题的SSCCE:

#include <iostream>

int roundtrip(int x)
{
    return int(float(x));
}

int main()
{
    int a = 2147483583;
    int b = 2147483584;
    std::cout << a << " -> " << roundtrip(a) << '\n';
    std::cout << b << " -> " << roundtrip(b) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我的电脑(Xubuntu 12.04.3 LTS)上的输出是:

2147483583 -> 2147483520
2147483584 -> -2147483648
Run Code Online (Sandbox Code Playgroud)

请注意b往返后正数如何变为负数.这种行为是否明确规定?我原本期望int-to-float round-tripping至少能正确保存符号......

嗯,在ideone上,输出是不同的:

2147483583 -> 2147483520
2147483584 -> 2147483647
Run Code Online (Sandbox Code Playgroud)

g ++团队是否在此期间修复了错误,或者两个输出都完全有效?

c++ floating-point type-conversion ieee-754 twos-complement

42
推荐指数
2
解决办法
3279
查看次数

为什么移动指针变量不将其设置为null?

在实现移动构造函数和移动赋值运算符时,通常会编写如下代码:

p = other.p;
other.p = 0;
Run Code Online (Sandbox Code Playgroud)

隐式定义的移动操作将使用以下代码实现:

p = std::move(other.p);
Run Code Online (Sandbox Code Playgroud)

这将是错误的,因为移动指针变量并没有将其设置为null.这是为什么?是否有任何情况我们希望移动操作保持原始指针变量不变?

注意:通过"移动",我只是表示子表达式std::move(other.p),我的意思是整个表达式p = std::move(other.p).那么,为什么没有特殊的语言规则说"如果赋值的右侧是指针xvalue,则在赋值发生后将其设置为null."?

c++ null pointers move-semantics c++11

41
推荐指数
2
解决办法
1万
查看次数

矢量数据如何对齐?

如果我想std::vector用SSE 处理数据,我需要16字节对齐.我怎样才能做到这一点?我需要编写自己的分配器吗?或者默认分配器是否已经与16字节边界对齐?

c++ sse vector alignment allocator

40
推荐指数
3
解决办法
2万
查看次数

如何从List <Integer>获取IntStream?

我可以想到两种方式:

public static IntStream foo(List<Integer> list)
{
    return list.stream().mapToInt(Integer::valueOf);
}

public static IntStream bar(List<Integer> list)
{
    return list.stream().mapToInt(x -> x);
}
Run Code Online (Sandbox Code Playgroud)

什么是惯用的方式?也许已经有一个库函数完全符合我的要求?

java collections boxing java-8 java-stream

40
推荐指数
2
解决办法
1万
查看次数

将对象声明为"最终"有什么意义?

我只是注意到可以final在Scala中声明对象:

final object O
Run Code Online (Sandbox Code Playgroud)

这样做有什么意义?无论如何,无法继承对象:

object A
object B extends A // not found: type A
Run Code Online (Sandbox Code Playgroud)

inheritance scala final object

39
推荐指数
2
解决办法
2830
查看次数