小编Top*_*ort的帖子

C++20 概念:int not swappable_with int

我正在尝试 C++20 的概念,要么std::swappable_with是未定义的(Visual Studio,使用/std:c++latest),要么它的约束与下面的 MCVE 不匹配(g++10 使用-std=c++2a)——也就是说,int不能与int(!) . 有什么办法解决这个问题?如果int不能与 交换int,我看不到任何工作。

#include <concepts> 

template <typename T, typename U>
requires std::swappable_with<T,U>
void mySwap(T& t, U& u)
{
    T temp = t; t = u; u = temp;
}

int main()
{
    int x, y;
    mySwap(x, y);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ c++-concepts c++20

15
推荐指数
2
解决办法
568
查看次数

从Visual Studio中删除项目类型

如何从Visual Studio中删除项目类型?我创建了一个并用VSIX文件安装它,但我想改变它,新的VSIX文件说我无法安装新的,因为旧的存在.

TIA.

visual-studio-2013

11
推荐指数
1
解决办法
247
查看次数

C++ 17:仍然使用枚举作为常量?

我习惯使用enum常量 - 它们可以快速编写,可以放在.h文件中,并且工作正常.

enum {BOX_LEFT=10, BOX_TOP=50, BOX_WIDTH=100, BOX_HEIGHT=50};
enum {REASONS_I_LIKE_ENUM_AS_CONSTANTS = 3};
Run Code Online (Sandbox Code Playgroud)

这不再是个好主意吗?

我认为有更好的理由选择枚举类(传统的枚举隐式转换为int;常规枚举将其枚举器导出到周围的范围),但这些是在这种情况下更喜欢旧枚举的原因.

我在一个关于静态constexpr int和旧式枚举的线程中看到旧式枚举更好,因为有了一个静态的constexpr成员,你必须在类外面声明它.但是这在C++ 17中显然不再适用,并且可能只适用于类成员.

什么是c ++ 17的首选方式?

c++ enums c++17

9
推荐指数
1
解决办法
545
查看次数

重新加载页面后$ _SESSION为空

我的脚本test.php在下面.当我单击Submit时,它会将其作为登录尝试进行处理并成功设置$_SESSION变量.但是当我重新加载页面时(通过单击链接回自身),它$_SESSION是空的.

<?php
    //test.php

    session_start ();

    function isUserLoggedIn (&$username)    
    {
        $loggedIn = isset ($_SESSION['loggedin']);
        if ($loggedIn) 
            $username = $_SESSION['user']; 
        else 
            $username = ''; 

        return $loggedIn;
    }

    function processLogin () 
    {               
        $_SESSION['loggedin'] = TRUE;
        $_SESSION['user']  = "podunk";

        session_write_close ();         
    } 

    echo '$_SESSION before we do anything..................: '; 
    print_r ($_SESSION); 
    echo "<br>";

    if (isset($_POST['Submit'])) processLogin ();

    $loggedIn = isUserLoggedIn ($username); 

    echo '$_SESSION after processing any login attempt: '; 
    print_r ($_SESSION); 
    echo "<br>";

    if ($loggedIn) 
        echo "I AM …
Run Code Online (Sandbox Code Playgroud)

php

6
推荐指数
1
解决办法
1106
查看次数

SDL_SetWindowSize resizes window, but SDL_GetWindowSize reports old size -- in Unix

I can't use SDL_GetWindowSize cross-platform, because in Unix it doesn't know that the window size changed (though I can see it did). Visual Studio and MinGW have no problem. (I keep running into cases where Unix is an outlier, but it's always been that I was doing something wrong and the other 2 platforms didn't notice.)

我在VirtualBox的64位Ubuntu 4.18.0上运行了SDL2的2.0.8 + dfsg1-4ubuntu版本;自此已在Ubuntu 5.0.0上升级到SDL2 2.0.9 + dfsg1-1ubuntu1,但行为是相同的。它在X11上使用GNOME Shell。

与的交互SDL_PollEvent很奇怪。但是我确实认为有时可以称呼它为可能和合理!

那么,如何才能SDL_GetWindowSize准确地报告尺寸?

MCVE:

#include <cassert>
#include <SDL.h>

using namespace std;

int …
Run Code Online (Sandbox Code Playgroud)

c++ linux x11 sdl-2

6
推荐指数
0
解决办法
188
查看次数

雅虎 财务股票数据在线提供不同的结果

我正在直接从Yahoo!下载股票数据 金融.

我将两个日期的"Adj Closed"进行比较以获得增长率.例如,1987年7月20日,KO(可口可乐)的收盘价调整为1.71,而2013年7月1日的收盘价为40.46.因此该比率为2366%; 我的程序是正确的.但它不同意雅虎的图表!财务,很容易理解为什么:图表的7月20日价值为3.0238.但为什么他们的图表与他们的数据不同?

将VFINX(一个指数基金)与^ GSPC(标准普尔,这是它的索引)进行比较时,我遇到了一个更糟糕的问题.该图显示它们应该是一致的,大约在400%左右.在此期间,VFINX从16.14增长到156.14(调整后收盘).但^ GSPC从302.94增长到1692.39,这给出了一个非常不同的比率.

我的数据出了什么问题?我是在误解某些东西,还是在错误的地方寻找?

这是^ GSPC.最后一个字段是Adjusted Closing.
7/23/2013 1696.63 1698.78 1691.13 1692.39 3096180000 1692.39
7/1/1987 303.99 304 302.53 302.94 157000000 302.94
这是VFINX
7/23/2013 156.14 156.14 156.14 156.14 0 156.14
7/1/1987 30.41 30.41 30.41 30.41 0 16.14

yahoo-api yahoo-finance

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

Visual Studio目标部署不存在

在Visual Studio 2017中运行构建的项目时出现此错误:

------ Deploy started: Project: myProj, Configuration: Debug Win32 ------  

C:\...\myProj.vcxproj : error MSB4057: The target "Deploy" does not exist in the project.
Done building project "myProj.vcxproj" -- FAILED.
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我在网上发现了一些东西,取消选中Build,Configuration Manager中的Deploy ......但它已经取消选中了.

如果我尝试再次运行它,它将加载并运行.但我希望能够发布第一次有效的代码.我还能尝试什么?TIA.

visual-studio

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

不能在 C++20 中将 std::cin 与 char* 或 char[] 一起使用

曾经工作过:从std::cin动态分配的char数组读取- 或从作为参数传入的数组(参见下面的 MCVE)。

#include <iostream>

void read (char str[256]) //or omit the # between the []'s -- no difference
{
    std::cin >> str; //error
}

int main ()
{
    char  s1 [256];
    char* s2 = new char[256];
    char  s3 [256];

    std::cin >> s1;   //OK
    std::cin >> s2;   //error
    read (s3);       

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我相信问题是一个名为Fixingoperator>>(basic_istream&, CharT*)的 C++20 更新。它的目的是防止std::cin它正在读入的字符串溢出,并且 cppreference.com 确实列出了's 的新原型,这些原型现在具有,而不是作为所采用的参数。std::istreamoperator>>CharT (&s)[N]CharT* …

c++ c++20

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

C++20 协程:需要一个使用 co_yield 的函数

此 MCVE 无法在 g++10 中编译(带-std=c++21 -fcoroutines选项)。

#include <iostream>

int f() { for (int i = 0; i < 10; ++i) co_yield i; }

int main ()
{
    for (int i : f())
        std::cout << i << ' ';

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

最上面的一行应该是什么样子f,这样我才能得到一个可以工作的协程?或者是否需要做其他事情来创建一个工作协程?它需要是 C++20 的一部分(g++10应该完全支持),而不是添加的库。

c++ coroutine c++20 c++-coroutine

3
推荐指数
1
解决办法
5414
查看次数

C++ 函数模板需要 &amp; 用于数组参数

在此 MCVE 中,编译器抱怨processArray无法匹配参数列表 ( arr)。修复方法是替换T elements[SIZE]T (&elements)[SIZE]. 为什么我需要这样做,在什么情况下?我&通常不会将数组传递给函数。(我想到它的唯一原因是 C++20 的新版本是如何istream& operator>>描述它的 char-array 参数的。)

template <typename T, int SIZE>
void processArray(T elements[SIZE])
{
    for (int i = 0; i < SIZE; ++i)
        elements[i] = 2;
}

int main()
{
    int arr[3];

    processArray(arr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++20

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