小编jaw*_*awa的帖子

在Visual Studio 2010/2012和发布模式下使用SSE instrinsics时,结果不正确

我正在使用SSE内在函数计算数组的均值和方差.基本上,这是值及其平方的总和,可以在以下程序中说明:

int main( int argc, const char* argv[] )
{
    union u
    {
        __m128 m;
        float f[4];
    } x;

    // Allocate memory and initialize data: [1,2,3,...stSize+1]
    const size_t stSize = 1024;
    float *pData = (float*) _aligned_malloc(stSize*sizeof(float), 32);
    for ( size_t s = 0; s < stSize; ++s ) {
        pData[s] = s+1;
    }

    // Sum and sum of squares
    {
        // Accumlation using SSE intrinsics
        __m128 mEX = _mm_set_ps1(0.f);
        __m128 mEXX = _mm_set_ps1(0.f);
        for ( size_t s = 0; s …
Run Code Online (Sandbox Code Playgroud)

c++ sse visual-studio-2010 visual-studio-2012

5
推荐指数
1
解决办法
235
查看次数

“Clang-Tidy:使用 std::forward 和 const char* 时,不要将数组隐式衰减为指针”

Clang-Tidy: Do not implicitly decay an array into a pointer 我不明白为什么 Clang-Tidy在以下示例中产生错误:

struct Foo {
  explicit Foo(std::string _identifier) : identifier(std::move(_identifier)) {}

  std::string identifier;
};

struct Bar {
  template<typename... Ts>
  explicit Bar(Ts &&...args) : foo(std::forward<Ts>(args)...) {} // <-- Error

  Foo foo;
};

Bar bar("hello world");

Run Code Online (Sandbox Code Playgroud)

从错误中我了解到,"hello world"作为类型(或类似)的数组const char[11]会在 期间衰减到const char*某个位置std::forward。但为什么以及如何修复这个错误呢?std::make_shared<Foo>("hello world")与 的用法非常相似std::forward并且确实有效。

c++ c++11 clang-tidy

5
推荐指数
1
解决办法
1637
查看次数