小编Moh*_*hit的帖子

如何将低级别const应用于模板变量.我正在尝试编写一个const_cast实现

如何static_assert在我的失败代码中进行此传递?我试过的所有排列const周围T,但我没能得到const int *.编译器总是把它解释为int * const.

template <class T>
union const_cast_impl {

    using CT =  const T;
    static_assert(std::is_same<CT,const int *>::value, "CT is not const int*");

    T data;
    CT cdata;

    const_cast_impl(CT ptr):cdata(ptr){}

    operator T(){
        return data;
    }
};

int main(){
    int a = 2;
    const int *ptr = &a;
    int *ptr2 = const_cast_impl<int *>(ptr);
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

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

在 Python2.7 中实现 Barrier

我使用 Barriers 在 Python3 中实现了这段代码。我想在 Python2.7 中获得相同的功能,但我不知道要使用哪个同步原语,因为 Python2.7 中不存在 Barriers

import threading
import time
from threading import Thread,Barrier

b = Barrier(2, timeout=50)

def func1():
    time.sleep(3)
    b.wait()
    print('Working from func1')
    return 

def func2():
    time.sleep(5)
    b.wait()
    print('Working from func2')
    return

if __name__ == '__main__':
    Thread(target = func1).start()
    Thread(target = func2).start()
Run Code Online (Sandbox Code Playgroud)

python multithreading synchronization python-2.7 python-3.x

3
推荐指数
1
解决办法
5026
查看次数

如何在预处理阶段获取c ++函数调用者名称

我必须使用PERF_INSTRUMENT库中的宏.PERF_INSTRUMENT期望用户提供c样式字符串作为函数名称来打印此仪器点的位置.

但是,我不想每次使用时编写函数名称,PERF_INSTRUMENT而是想要调用它,__func__ 以便函数名称自动包含在perf日志中.

但是当我使用__func__它时实际返回operator()是因为__func__它嵌入在lambda函数中.

他们可以通过哪种方式将main()函数名称传递给PERF_INSTRUMENT宏.

#include <cstdio>
#include <cassert> 
#include <type_traits> 

using namespace std;

namespace /* anonymous */
{
    template< typename T >
    struct Is_Const_Char_Array
      : std::is_same< std::remove_reference_t< T >,
                      char const[ std::extent< std::remove_reference_t< T > >::value ] >
    {};

    template< typename T >
    struct Is_C_String_Literal
      : Is_Const_Char_Array< T >
    {};
}

#define PERF_INSTRUMENT(name)  auto instObj = [] { static_assert( Is_C_String_Literal< decltype( name …
Run Code Online (Sandbox Code Playgroud)

c++ template-meta-programming c-preprocessor preprocessor-meta-program c++11

3
推荐指数
1
解决办法
168
查看次数