小编Dav*_*vid的帖子

std :: forward如何工作?

可能重复:
使用forward的优点

我知道它的作用以及何时使用它但我仍然无法理解其工作原理.请尽可能详细,并解释std::forward如果允许使用模板参数推断,何时不正确.

我的一部分困惑是:"如果它有一个名字,它就是一个左值" - 如果是这样的话,为什么std::forward当我通过thing&& xvs 时表现不同thing& x

c++ c++11

106
推荐指数
2
解决办法
7万
查看次数

静态库调试符号

在VS2010中,有一个选项可以在链接器下为exes/dll生成调试信息,但在库的librarian下没有这样的选项.调试信息是否嵌入在静态库中?

libs,exes和dll的程序库文件名C/C++属性中有一个选项.默认情况下,它进入我的中间目录,并命名为libs的项目名称,但名为vc $(PlatformToolsetVersion).pdb for exes/dlls.这个选项的pdb是什么,它与链接器选项中的pdb有什么不同?

如果我提供带有库和头文件的库,如何向库的用户提供调试符号?

c++ visual-studio-2010 visual-studio

63
推荐指数
4
解决办法
5万
查看次数

为什么存在vcxproj.filters文件?

vcxproj.filters不应嵌入.vcxproj中吗?目前我必须检查源代码控制,以便其他人可以在解决方案中看到文件夹结构.

visual-studio-2010 visual-studio

51
推荐指数
3
解决办法
3万
查看次数

编译时常量id

鉴于以下内容:

template<typename T>
class A
{
public:
    static const unsigned int ID = ?;
};
Run Code Online (Sandbox Code Playgroud)

我希望ID为每个T生成一个唯一的编译时间ID.我考虑过__COUNTER__并且增强PP库但到目前为止都没有成功.我怎样才能做到这一点?

编辑:ID必须可用作switch语句中的大小写

Edit2:基于静态方法或成员地址的所有答案都不正确.尽管它们确实创建了唯一的ID,但它们在编译时未得到解析,因此不能用作switch语句的情况.

c++ templates template-meta-programming

43
推荐指数
4
解决办法
8410
查看次数

std :: chrono :: high_resolution_clock的分辨率与测量值不对应

让我通过这个测试程序问我的问题:

#include <iostream>
#include <chrono>

using std::chrono::nanoseconds;
using std::chrono::duration_cast;

int main(int argc, char* argv[])
{
    std::cout << "resolution (nano) = " << (double) std::chrono::high_resolution_clock::period::num
        / std::chrono::high_resolution_clock::period::den * 1000 * 1000 * 1000 << std::endl;

    auto t1 = std::chrono::high_resolution_clock::now();
    std::cout << "how much nanoseconds std::cout takes?" << std::endl;
    auto t2 = std::chrono::high_resolution_clock::now();


    auto diff = t2-t1;
    nanoseconds ns = duration_cast<nanoseconds>(diff);

    std::cout << "std::cout takes " << ns.count() << " nanoseconds" << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我机器上的输出:

分辨率(纳米)= 100

std :: cout需要多少纳秒? …

c++ c++11 c++-chrono visual-studio-2012

30
推荐指数
2
解决办法
2万
查看次数

数学将自1970年以来的秒数转换为日期,反之亦然

我从1970年1月1日00:00开始的秒数为纳秒的int64,我试图将其转换为月/日/年/星期.

迭代地执行此操作很容易,我有这个工作,但我想公式化.我正在寻找实际的数学.

c++ math date

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

为什么用std :: forward禁用模板参数推导?

在VS2010中,std :: forward定义如下:

template<class _Ty> inline
_Ty&& forward(typename identity<_Ty>::type& _Arg)
{   // forward _Arg, given explicitly specified type parameter
    return ((_Ty&&)_Arg);
}
Run Code Online (Sandbox Code Playgroud)

identity似乎仅用于禁用模板参数推断.在这种情况下故意禁用它有什么意义?

c++ stl visual-studio-2010 c++11

24
推荐指数
2
解决办法
4944
查看次数

模板类中方法的部分特化

鉴于:

struct A
{
    virtual bool what() = 0;
};

template<typename T, typename Q>
struct B : public A
{
    virtual bool what();
};
Run Code Online (Sandbox Code Playgroud)

我想部分专注what如下:

template<typename T, typename Q>
bool B<T, Q>::what()
{
    return true;
}

template<typename Q>
bool B<float, Q>::what()
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但似乎这是不可能的(它是否在C++ 11中?)所以我尝试了SFINAE:

template<typename T>
typename std::enable_if<std::is_same<T, float>::value, bool>::type B<T>::what()
{
    return true;
}

template<typename T>
typename std::enable_if<!std::is_same<T, float>::value, bool>::type B<T>::what()
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这也行不通,我不知道为什么,有人吗?所以我找到了这个帖子,结果是:

template<typename T, typename Q>
struct B …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae template-specialization

22
推荐指数
1
解决办法
1万
查看次数

你应该在std命名空间中重载swap吗?

我今天读到一些有趣的内容,说用户提供的类型(作为模板参数提供)调用swap的"标准"方式是......

using std::swap;
swap(something, soemthingelse);
Run Code Online (Sandbox Code Playgroud)

这样做的原因是使用的参数依赖查找要么使用一个swap在用户的命名空间或函数swapstd命名空间.这为我提出了一个感兴趣的问题.当我超载std::swap了我的课之一,我实际上已被定义它的std命名空间... namespace std { void swap(/*...*/){/*...*/} }.这种做法错了吗?我应该定义自己的swaps std或我自己的命名空间(以及为什么)?

c++ stl

20
推荐指数
2
解决办法
3179
查看次数

公共标准C++ 14委员会草案是公开的吗?

截至上周六......

今天下午在英国布里斯托尔,ISO C++标准委员会采用了通用lambdas,动态数组(C99 VLAs的改进版本),变量模板,读取器/写入器锁,make_unique,可选,标准库用户定义的文字,以及一些其他语言和图书馆改进 - 并批准结果作为标准C++ 14的特征完整委员会草案(CD),将分发给其主要的国际审查投票.

我很感兴趣阅读有关新功能的细节,但我似乎找不到比上面的链接更多的关于它们的文章.

c++ language-lawyer c++14

20
推荐指数
1
解决办法
3916
查看次数