프로그래밍/c++

boost::lockfree::queue의 타입 제한(error C2338)

제페 2016. 1. 13. 02:57
반응형


boost lockfree queue는 trivial 타입만 사용할 수 있다.


1
2
3
boost::lockfree::queue<int> int_queue; // ok
 
boost::lockfree::queue<std::string> string_queue; // error!



trivial 타입 조건?

  • 0. 어떤 생성자도 없음
  • 1. 가상 함수 없음
  • 2. 소멸자 없음
memcpy로 인스턴스 복사를 해도 아무런 문제가 없을 그런 타입을 trivial이라 부른다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Trivial Type
struct A
{
    void* buf;
    size_t size;
};
 
// Non Trivial Type
struct B
{
    B(): buf{nullptr}, size{0}
    {
    }
 
    void* buf;
    size_t size;
};
 
cs


참고: http://faithandbrave.hateblo.jp/entry/20130213/1360737911

반응형