标签: qualifiers

C++ 98/03引用折叠和cv限定符

下面的代码编译(gcc 4.7.2或icc 13)并产生"1 2"输出.这意味着const限定符被删除,即f<int&>具有参数类型int&.

为什么会这样?据我了解,根据§14.3.1.4:

如果一个模板参数的模板参数T名称的类型"参考CV1 S ",企图制造型"参考CV2 T "创造型"参考CV12 S ",其中CV12是CV-合格网络ERS的联合CV1cv2.冗余的cv-quali firs被忽略.

const不应该被丢弃.这是代码:

#include <iostream>
using namespace std;

template <typename T>
void f(const T& t)
{
    t++;
}

int main()
{
    int a = 1;

    cout << a;
    f<int&>(a);
    cout << ' ' << a << endl;

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

c++ reference qualifiers c++03 c++98

6
推荐指数
2
解决办法
531
查看次数

创建忽略注释值的拦截器限定符()

有没有办法创建一个拦截器限定符注释,忽略注释字符串值以进行限定?

例如:

Log.java

@Inherited
@InterceptorBinding
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
    String value() default ""; // <---- ignore this
}
Run Code Online (Sandbox Code Playgroud)

LogInterceptor.java

@Log
@Interceptor
public class LogInterceptor implements Serializable {

    ...
}
Run Code Online (Sandbox Code Playgroud)

Usage.java

@Log("message for this log")
public String interceptedMethod(String param) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为注释value("message for this log")作为限定符,但我想使用value()not作为限定符,但使用消息日志.

qualifiers java-ee cdi java-ee-6 jboss-weld

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

cv-qualified意味着什么?

我已经开始看到"cv-qualified"一词被抛出很多.

回答我的上一个问题:

如果T是(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(12.1)

有人可以为我定义吗?

c++ declaration definition qualifiers

6
推荐指数
2
解决办法
7460
查看次数

android构建工具默认在生成的apk中将v4限定符添加到可绘制文件夹

我已经困惑很长一段时间了.

在构建工具v21.0.0之前,打包的apk包含drawable文件夹结构,如下所示:

res/drawable-hdpi
res/drawable-ldpi
res/drawable-mdpi
res/drawable-hdpi
Run Code Online (Sandbox Code Playgroud)

但是,自v21.0.0以来发生了变化,unzip文件夹结构带有后缀:

res/drawable-hdpi-v4
res/drawable-ldpi-v4
res/drawable-mdpi-v4
res/drawable-hdpi-v4
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 为什么默认情况下为可绘制文件夹添加了v4后缀?目前,应用程序通常基于更高版本的API构建.我觉得不需要添加v4限定符.
  2. 为什么从v21.0.0开始?我已经完成了几乎所有版本的构建工具,这只发生在v21.0.0之后.
  3. 未来还会有其他资格赛如v6,v9等吗?

非常感谢你提前.

android qualifiers build-tools aapt suffix

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

重载分辨率和const的共享指针

我正在转换大型代码以使用自定义共享指针而不是原始指针.我有重载分辨率的问题.考虑这个例子:

#include <iostream>

struct A {};

struct B : public A {};

void f(const A*)
{
    std::cout << "const version\n";
}

void f(A*)
{
    std::cout << "non-const version\n";
}

int main(int, char**)
{
    B* b;
    f(b);
}
Run Code Online (Sandbox Code Playgroud)

此代码正确写入"非const版本",因为限定转换在隐式转换序列的排名中起作用.现在看一下使用shared_ptr的版本:

#include <iostream>
#include<memory>

struct A {};

struct B : public A {};

void f(std::shared_ptr<const A>)
{
    std::cout << "const version\n";
}

void f(std::shared_ptr<A>)
{
    std::cout << "non-const version\n";
}

int main(int, char**)
{
   std::shared_ptr<B> b;
   f(b);
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,因为函数调用不明确.

我知道用户定义的演绎指南 …

c++ qualifiers shared-ptr overload-resolution

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

Android多屏限定符定义

好的,我想创建一个与大量设备和屏幕兼容的布局.正如我一直在研究的那样,我发现最常见的屏幕分辨率是249x320,480x800,600x1024,720x1280(以及其他一些与这些屏幕成比例的屏幕).

好吧,在阅读文档后,我发现有两种方法可以做到这一点.直到3.2 Android版本,我可以使用限定符作为"小,普通,大,xlarge"的布局,并将它们与"端口"(纵向)或"土地"(横向"相结合.

现在,第二种方式(似乎是最推荐的)仅适用于Android 3.2及更高版本.无论屏幕方向如何(???),都必须指定必须使用布局的最小宽度.

因为在使用第二种方法时你不能指定端口或地面限定符,我更喜欢第一种方法.我的问题是:第一种兼容Android 3.2及更高版本的方法是什么?我必须使用Android <3.2的第一种方法和Android> 3.2的第二种方法吗?如果是这样,我应该创建两个项目,或者可以组合这两个方法(为一般大小限定符和特定的最小宽度限定符创建大约10个布局大小).我想这需要更多的资源.

谢谢,抱歉我的语言不好,

size android screen qualifiers

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

UML限定符的目的是什么?

我无法理解UML中的限定符是什么.例如,在扫描页面中,有一个名为"SharedRegister"的限定符,其中包含"state"和"plateNumber".

为什么不使用一个名为SharerRegister的类并将"state"和"plateNumber"放入其中?它究竟为一个班级提供什么?

Schaum UML  - 第108页

(图片来自Schaum的大纲,UML第2版.Simon Benett.第108页)

uml qualifiers

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

变量限定符位置的"问题"是什么?

本文档中,在标记为"可变限定符"的部分下,Apple说:

你应该正确装饰变量.在对象变量声明中使用限定符时,正确的格式为:

ClassName * qualifier variableName;
Run Code Online (Sandbox Code Playgroud)

例如:

MyClass * __weak myWeakReference;
MyClass * __unsafe_unretained myUnsafeReference;
Run Code Online (Sandbox Code Playgroud)

其他变体在技术上是不正确的,但编译器"原谅"了.要了解此问题,请访问http://cdecl.org/.

查看cdecl.org并未澄清任何内容.任何人都可以解释他们所指的"问题"是什么?换句话说,帮助我说服别人,这实际上不仅仅是因为"因为这篇自述文件是这么说的".

syntax objective-c qualifiers

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

函数原型中的顶级 volatile 或 limit 是否重要?

以下原型之间有什么实际区别吗?

void f(const int *p);

void f(const int *restrict p);

void f(const int *volatile p);
Run Code Online (Sandbox Code Playgroud)

C11 6.7.6.3/15 节(最后一句)指出,为了确定类型兼容性,不考虑顶级限定符,即允许函数定义在其参数上具有与原型不同的顶级限定符宣言了。

然而(与 C++ 不同)它并没有说它们被完全忽略。在这种情况下,const这显然是没有意义的;volatile然而,在和的情况下restrict也许可能存在差异。

例子:

void f(const int *restrict p);

int main()
{
     int a = 42;
     const int *p = &a;
     f(p);
     return a;
}
Run Code Online (Sandbox Code Playgroud)

原型中的存在是否restrict允许编译器优化afor的读取return a;

相关问题

c qualifiers language-lawyer restrict-qualifier

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

C#:为什么第一个命名空间是多余的?

这有点怪异.

我在想某个地方必须有一个设置可以解释为什么会这样.

在我们的解决方案中,大约有50个不同的项目 在大多数情况下,库以命名空间OurCompany开头.

我们有OurComany.This.That和OurCompany.Foo.Bar ...等

外部库与命名空间之间存在命名空间/类冲突

OurCompany.Foo.Bar
Run Code Online (Sandbox Code Playgroud)

还有一个合格的班级......

OurCompany.Some.Location.Foo
Run Code Online (Sandbox Code Playgroud)

错误是这样的:

Error   75  The type or namespace name 'MethodName' does not exist in the
namespace 'OurCompany.Foo' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

当我完全限定"OurCompany"命名空间下的任何内容时,甚至Resharper都会给我一个"Qualifier is redundant"消息.

OurCompany.Some.Location.Foo.MethodName();
//OurCompany is redundant
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚到底是做什么的.解决方案非常庞大,因此试图对问题进行逆向工程并不是很好的解决方案.

我应该说如果我用...

Some.Location.Foo.MethodName(); //Leaving out OurCompany
Run Code Online (Sandbox Code Playgroud)

...... Resharper消息消失了.

c# namespaces projects-and-solutions qualifiers

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