cost 118 ms
错误:std::variant 的模板参数列表中的类型/值不匹配 - error: type/value mismatch in template parameter list for std::variant

如果 class some_class是模板化的,则以下代码不起作用。 所以我的猜测是我必须将template说明符放在某些东西的前面,但我真的不知道在哪里? 我尝试将它放在变体定义中的 state::base 和 state::error 类型的前面,但这不起作用。 我把它放在哪里,为什么? 演 ...

为什么在模板中,如果未实例化,我们可以在未声明的情况下使用依赖名称? - Why in a template we can use a dependent name without being already declared if not instantiated?

我编写了这段代码来理解template名称查找: 我有意注释掉了函数bar(int)的声明。 此函数bar(int)在模板函数foo用作dependent name 。 所以它绑定在实例化上。 我在foo之后和foo<int>之前定义了bar ,以便后者可以看到bar(int) ...

在从未实例化的模板中错误使用非相关名称是否需要诊断? - Is a diagnostic required for incorrect uses of non-dependent names in a template that is never instantiated?

下面是标准说有关模板定义非依赖的名字: 模板定义中使用的非依赖名称是使用通常的名称查找找到的,并在使用它们的地方绑定。 [示例1: — 结束示例] 我对h++;的评论感到困惑h++; 上面写着“格式错误:......这可以在此处或在实例化时进行诊断”。 如果实现选择后者, ...

当结构声明被变量隐藏时的名称解析 - Name resolution when a structure declaration is hidden by a variable

让我们考虑以下演示程序。 正如看见的成员的声明struct B在结构A由数据成员的声明中隐藏B具有类型int 。 所以在模板结构声明的函数定义中 不应该找到依赖名称T::B 。 但是编译器gcc 8.3编译成功,程序输出 另一方面,编译器Visual C++ 2019不会编译程序并发 ...

&quot;typename iterator_traits&quot; 是什么意思<InputIt> ::difference_type”是什么意思? - What does "typename iterator_traits<InputIt>::difference_type" mean?

这是来自https://devdocs.io/cpp/algorithm/count_if的计数算法的示例实现: 我的问题是, typename iterator_traits&lt;InputIt&gt;::difference_type的意义是什么? 如果我要实现这个,我会简单地使用unsi ...

C++中“从属姓名”的定义是什么? - What is the definition of "dependent name" in C++?

在 C++ 中,依赖名称的概念很重要,因为: 这样的名称是未绑定的,并在模板实例化点查找......在模板定义的上下文和实例化点的上下文中然而,该标准唯一说的是[temp.dep]/2中给出的依赖名称,指的是不合格的 function 调用,基本上是为了使 ADL 能够对那些 function 调 ...

C++ - 为什么这里需要“模板”关键字? - C++ - Why is the 'template' keyword required here?

我有以下代码: 当使用 gcc 9.2 和 clang (9.0) 构建它时,由于调用fun需要template关键字,我收到编译错误。 Clang 显示: 我不明白为什么编译器认为fun是f上下文中的依赖名称,因为f本身不是模板。 如果我将C更改为常规类而不是模板,错误就会消失; 但是, ...

为什么这个模板函数没有按预期运行? - Why does this template function not behave as expected?

我正在阅读有关模板函数的内容,并对这个问题感到困惑: 如果我不写template void g&lt;double&gt;(double);结果是一样的 . 我认为g&lt;double&gt;应该在f(double)之后实例化,因此在g中对f的调用应该调用f(double) 。 令人惊讶的是,它 ...

依赖名称的参数依赖查找 - Argument-dependent lookup of dependent names

cppreference.com 上的这个描述说 模板中使用的依赖名称的查找被推迟,直到模板参数已知,此时 [...] ADL 检查具有外部链接的函数声明,这些函数声明在模板定义上下文或模板实例化上下文中可见。 与此相反,下面的代码片段可以用三个编译器(MSVC、clang、gcc)很好地 ...

是非静态数据成员的不合格名称,具有依赖类型 - Are unqualified names of non-static data members with dependent types dependent

从属名称在C ++标准中没有明确定义,因此在确定什么是从属名称方面有很多不足之处,这引出了我这个问题: 具有从属类型的非静态数据成员的不合格名称是否从属? 例如: 这里的名称t是从属名称吗? 该类型当然是依赖的,但尚不清楚名称是否是名称,因为可以始终解析该名称以引用成员。 ...

访问条件类成员的方法,仅在被调用时才编译 - method, that accesses a conditional class member, does not compile only when being invoked

我编写了以下类,该类具有条件成员_s和worksOnlyForString方法,该方法以std::string访问该成员。 如果没有调用worksOnlyForString方法,则即使成员不是std::string ,代码也会编译。 有一个众所周知的c ++规则-模板函数仅在使用时才完全 ...

为什么依赖名称可以被认为是完整的,即使实际类型直到最后才定义 - Why can a dependent name be considered as complete even if the actual type is not defined until the very end

考虑这个例子 : 请注意, struct X直到最后才定义。 我曾经相信所有使用过的名字必须在实例化时完成。 但是在这里,编译器如何在定义之前将其视为完整类型? 我已经检查了cppreference中的依赖名称和函数模板实例化的绑定规则和查找规则,但是没有一个能够解释这里发生的 ...

std :: vector的比较运算符 <T> 无法找到T的比较运算符 - Comparison operator for std::vector<T> fails to find comparison operator for T

以下非常简单的代码将无法编译 https://godbolt.org/g/zn6UgJ 不会编译我的任何编译器。 而以下 https://godbolt.org/g/o4pc1b 编译得很好,这让我觉得std::vector&lt;T&gt;比较运算符在T的命名 ...

嵌套类是类模板中的依赖类型吗? - Nested classes are dependent types in class templates?

考虑以下: 没有typename ,编译将失败,因为T2被视为从属名称,因此不是类型。 在考虑了C ++ 17草案标准(N4659)之后,我相信我已经确定了原因: §17.6.2.1第5段 名称是当前实例的成员,如果它是 —一种不合格的名称,当查找时,该名称指的是类 ...

为什么我不能使用QList :: size_type,因为我会使用std :: string :: size_type? (模板参数错误) - Why can't I use QList::size_type as I would std::string::size_type? (template parameter error)

在我的for循环中声明迭代器时研究无符号与有符号整数比较警告时, 我读到了这个 : 尽可能使用您将要比较的确切类型(例如,在与std::string的长度进行比较时使用std::string::size_type )。 我有一个QList&lt;T&gt;我想迭代,使用上面的方 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM