小编Mon*_*omy的帖子

类范围中的类模板特化?

为什么A中的专业化S和B中的S不是?

(如果B未被注释掉)GCC 4.8.1:错误:非命名空间范围'class B'中的显式特化

#include <type_traits>
#include <iostream>

class Y {};
class X {};

struct A {
  template<class T, class = void>
  class S;

  template<class T>
  struct S < T, typename std::enable_if< std::is_same< Y, T >::value >::type > 
  {
    int i = 0;
  };

  template<class T>
  struct S < T, typename std::enable_if< std::is_same< X, T >::value >::type > 
  {
    int i = 1;
  };
};

/*
class B
{
    template<class T>
    class S;

    template<>
    class S < Y > {}; …
Run Code Online (Sandbox Code Playgroud)

c++ templates nested-class specialization

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

C++:在编译时消除这段代码的歧义?

我试图找到一种方法来消除这个代码的歧义(在编译时)(因为两天: - ) - > get_value是ambugiuous.

#include <iostream>

template <typename T>
struct type2type {};

template<class T, int val>
struct BASE
{
  static constexpr int get_value ( type2type< T > )
  {
    return val;
  }
};

class X {};
class Y {};

struct A :
  public BASE< X, 1 >,
  public BASE< Y, 0 >
{};

int main ( int argc, char **argv )
{
  A a {};
  std::cout << a.get_value ( type2type< X >{} ) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

这是一个有效的运行时解决方案

#include …
Run Code Online (Sandbox Code Playgroud)

c++ templates ambiguous

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

如何从 C# 调试会话调试存储过程?

在 C# VisualStudio 项目中,C# 代码调用 .dbml 文件中引用的存储过程(或者通过 C# 的 SQL 命令调用该过程)。

是否可以在存储过程代码中设置一个断点,并在每次从 C# 调试会话调用存储过程时在此处中断(就像可以通过右键单击 SQL Server 对象资源管理器中的存储过程并选择“调试程序”)?

c# sql debugging visual-studio

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

在泛型类<T,U>的方法中比较两个T的变量(从C++到C#的代码端口)

如何在泛型类<T,U>的方法中比较两个类型为T的变量?这是一个抛出以下编译器错误的示例代码:

错误CS0019运算符'> ='不能应用于'T'和'T'类型的操作数

class IntervalSet< T, U >
{
    public void Add ( T start, T end, ref U val )
    {
        // new interval is empty?
        if (start >= end) // ERROR
            return; 
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将源代码从C++移植到C#,而C#对我来说是新的.谢谢你的帮助.

c# generics

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