我们考虑一组模板别名:
template<class T> using foo = T*;
template<class T> using bar = T*;
template<class T> using buz = foo<T>;
template< template<class>class TT > struct id {};
using id_foo = id<foo>;
using id_bar = id<bar>;
using id_buz = id<buz>;
Run Code Online (Sandbox Code Playgroud)
是id_foo,id_bar,id_buz相同或不同类型的?是foo,bar,buz相同或不同的模板?
各种编译器对此有不同的看法.尤其,
buz与...相同foo第14.5.7章"别名模板"中的标准C++ 11目前还不清楚.
我将Qt Creator与自定义生成系统(忍者)一起使用。问题是传递给Qt Creator IDE的$ PATH变量绝对是原始的:/usr/bin:/bin:/usr/sbin:/sbin。
因此,我必须编写bash -c '/path/to/ninja list of targets'而不是仅仅ninja list of targets在终端中执行构建步骤,而不是在IDE中。
我尝试了所有已知的食谱来设置$ PATH。
setenv PATH .....)sh -c 'launchtcl setenv PATH $PATH:.....')在StackOverflow答案中描述了使用启动年龄的想法。
没有效果!我的自定义.plist文件中的任何任意环境var都可以正确设置-PATH以外的任何值。(我已经对其进行了简单的测试:创建了一个自定义构建步骤echo xzxzxz=$XZXZXZ path=$PATH,其中在我的启动代理中也设置了xzxzxz)。
有趣的是,如果我从bash会话('/Applications/Qt Creator.app/Contents/MacOS/Qt Creator' &)启动Qt Creator ,它将获得与bash本身相同的正确PATH。
同样有趣的是,稍后启动代理分配的PATH被覆盖。我在那写信sh -c 'launchctl setenv PATH $PATH:/HELLOWORLD',但是我没看到HELLOWORLD echo $PATH。因此,存在竞争条件,稍后有人会从/ etc / paths和/etc/paths.d重建PATH。
从而:
该input()函数使用WinPython 3.3.5在Spyder IDE中的某些输入上返回奇怪的值:
>>>input('say:')
say:hello
hello
>>>input('say:')
say:hello!
hello!
>>>input('say:')
say:!
'evalsc(r"!")'
>>>input('say:')
say:!123
'evalsc(r"!123")'
>>>s = input('say:')
say:!
>>>type(s)
<class 'str'>
>>>repr(s)
'\'evalsc(r"!")\''
Run Code Online (Sandbox Code Playgroud)
为什么input()以这种奇怪的方式处理领先的惊叹号?
有趣的是,如果我从命令行运行相同的python,一切正常.但是,在Spyder IDE中,它让我变得愚蠢.