小编not*_*row的帖子

泛型类的Typedef(别名)

是否可以在C++中创建模板类的别名(不指定参数)?

typedef std::map myOwnMap;
Run Code Online (Sandbox Code Playgroud)

不起作用.

如果没有,有什么好的理由吗?

c++ templates

6
推荐指数
3
解决办法
6104
查看次数

在HashSet <T>上调用Distinct <>()

我只是很好奇..当我在HashSet上调用Distinct <>()(来自Linq)时,.NET是否知道,这个IEnumerable总是包含不同的值集,并优化了这个调用?

.net c# linq

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

boost :: lexical_cast <>的Locale不变保证

boost::lexical_cast<std::string>(double)用于将双精度转换为字符串,生成JSON序列化字节流,即(在远程端)由.NET解析.

我能够强制.NET InvariantCulture用于解析,从而在每种可能的语言上返回可预测的结果.

但是,我无法在boost :: lexical_cast文档中找到此保证.我尝试了一下,它对于不同的语言环境设置的工作方式相同.但是,我不能确定只有少数测试,我在文档中遗漏了什么,或者这根本不能保证,我必须使用别的东西?

编辑:我发现了一个问题.

std::locale::global(std::locale("Czech")); 
std::cout << boost::lexical_cast<std::string>(0.15784465) << std::endl;
Run Code Online (Sandbox Code Playgroud)

返回0,15784465,这是不受欢迎的.我可以强迫boost::lexical_cast<>不要知道语言环境吗?

c++ serialization boost invariantculture

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

如何在模板元编程中使用"默认"值

我面临以下问题:

我有一些通用容器,可以对类型进行一些操作.为简单起见,操作在请求时是线程安全的.并且,要求表示容器中的类型具有typedef std::true_type needs_thread_safety;.

struct thread_safe_item {
    typedef std::true_type needs_thread_safety;
    /* */ 
};

struct thread_unsafe_item {
    typedef std::false_type needs_thread_safety;
    /* */
};
template<typename TItem> container {
    /* some algorithms, that are std::enable_if selected, according to needs_thread_safety */
};
Run Code Online (Sandbox Code Playgroud)

但是,我希望needs_thread_safety选择加入,而不需要定义(=默认false_type).我试过以下:

    struct thread_unsafe_item {
        /* */ 
    };

template<typename TItem>
struct thread_safety_selector
{
    template<typename T>
    struct has_defined_thread_safety
    {
        typedef char yes[1];
        typedef char no[2];

        template <typename C> static yes& test(typename C::needs_thread_safety*);
        template <typename> …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming c++11

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

闭包的捕获变量存储在哪里?

我正致力于内存密集型应用程序,它应该正确处理内存不足的情况.

我有类似的东西

class memory_manager {
    // returns true if slot created (and function is being run)
    // false otherwise
    static bool create_slot(int id, std::function<void (slot&)>); ........
}
Run Code Online (Sandbox Code Playgroud)

此类处理,记录等所有内存不足问题,保留所有插槽的所有权,并驱动并发.

但是,我没有处理std::bad_alloc以下代码:

slot_data_to_copy dat;

memory_manager::create_slot(100, [&dat](slot& sx) { sx.assign_data(dat); });
Run Code Online (Sandbox Code Playgroud)

我假设在捕获变量期间完成了抛出.(我实际捕获的更多,这只是一个示例)

封闭在哪里创建?我可以控制它吗?或者,如果我以一种带参数的方式更新管理器,比如

slot_data_to_copy dat;

memory_manager::create_slot<slot_data_to_copy>
       (100, dat, [](slot& sx, slot_data_to_copy& dat) 
           { sx.assign_data(dat); }
       );
Run Code Online (Sandbox Code Playgroud)

是否保证它根本不投掷?

我正在使用Windows上的Visual C++和Linux上的GCC编译,但我只在Windows上观察到这种行为(在linux上,我的内存耗尽可能是我可以处理它的地方).

编辑:

http://en.cppreference.com/w/cpp/utility/functional/function/function - std :: function包含nothrow运算符..我可能遗漏了一些东西,但是在这个(lambda)情况下使用了哪一个?

c++ lambda c++11

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

TypeScript中的函子

如何在TypeScript中创建函子?

编辑:

在C ++世界中,Functor是可以保持状态的函数-基本上是具有重写()运算符的类。

因此,例如,我可以执行以下操作:

class myClass {
    var value : string;
    // how?
    functor() : string {
        return value;
    }
}



var a = new myClass();
a.value = "abc";
a(); // to return "abc"
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何在Rx中使用异步方法进行订阅?

我有以下代码:

IObservable<Data> _source;

...

_source.Subscribe(StoreToDatabase);

private async Task StoreToDatabase(Data data) {
    await dbstuff(data);
}
Run Code Online (Sandbox Code Playgroud)

但是,这不编译.有没有办法如何异步观察数据?我试过async void,它有效,但我觉得给定解决方案是不可行的.

我还检查了Reactive Extensions订阅呼叫等待,但它没有回答我的问题(我不关心SelectMany结果.)

c# system.reactive async-await

5
推荐指数
2
解决办法
3727
查看次数

在MySQL中的空连接上的group_concat

我有以下问题:我有两个表:(简化)

+--------+    +-----------+
| User   |    | Role      |
+--------+    +-----------+
| ID<PK> |    | ID <PK>   |
+--------+    | Name      |
              +-----------+
Run Code Online (Sandbox Code Playgroud)

和M:他们之间的关系

+-------------+   
| User_Role   |   
+-------------+
| User<FK>    |
| Role<FK>    |
+-------------+
Run Code Online (Sandbox Code Playgroud)

我需要创建一个视图,它选择我:User,并在一列中,选择他的所有角色(这是由group_concat完成的).

我试过以下:

SELECT u.*, group_concat(r.Name separator ',') as Roles FROM 
  User u
  LEFT JOIN User_Role ur ON ur.User=u.ID
  LEFT JOIN Role r ON ur.Role=r.ID
 GROUP BY u.ID;
Run Code Online (Sandbox Code Playgroud)

但是,这适用于具有某些已定义角色的用户.没有角色的用户不会被退回.如何修改语句,当用户没有任何角色时,在Roles列中返回带空字符串的用户?

说明:我将SQL数据直接传递给网格,然后网格自行格式化,我创建缓慢而复杂的视图比在我的代码中格式化更容易.

我正在使用MySQL

mysql grouping join

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

HttpContext.Current.Request.Url给出127.0.0.1

在以以下URL运行的Visual Studio中进行调试时,http://localhost:39452/ 我得到http://127.0.0.1以下属性的值

 HttpContext.Current.Request.Url
Run Code Online (Sandbox Code Playgroud)

而不是http://localhost:39452/ 在我的主机文件中具有此值:

::1  localhost
Run Code Online (Sandbox Code Playgroud)

你可以让我在这里做错什么吗?

c# asp.net windows-7 iis-7.5

4
推荐指数
2
解决办法
787
查看次数

F#currying - 用两个参数调用

我有问题,可以简化为以下示例:

let func a b c = printf "%s %s %s" a b c
let partial = func "a"

let something_that_returns_two_parameters = "b", "c" // what to write here?

something_that_returns_two_parameters |> partial // what to write here?
Run Code Online (Sandbox Code Playgroud)

我的预期结果是用"a""b""c"调用func.我可以编辑最后两行.这可以通过某种方式实现吗?

f# currying

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