티스토리 뷰

https://stackoverflow.com/questions/38501587/what-are-the-evaluation-order-guarantees-introduced-by-c17

foo(std::unique_ptr<A>(new A), std::unique_ptr<B>(new B));

modern에서 make_shared, make_unique 써야한는 이유로 나온 예제임.

최신 스펙에서는 앞에거 나뒤에거든 하나 다하고 나머지로 간다는 것 같음

In other words, function executions do not interleave with each other.

하지만, vc는 아직 미지원

https://blogs.msdn.microsoft.com/vcblog/2017/05/10/c17-features-in-vs-2017-3/

Refining expression evaluation order | No | P0145R3

new B, new A 하고 unique 생성자 호출함

마찬가지로, The c++ 4th

 std::string s = "but I have heard it works even if you don't believe in it" 
 s.replace(0, 4, "").replace(s.find("even"), 4, "only")
  .replace(s.find(" don't"), 6, "");

예제 역시, find(don't), find("even") 한다음, replace는 앞에서 뒤로 진행

괄호는 자체로 좀 더러운데

https://blog.codeisc.com/2017/12/26/cpp-comma-operator-introduction.html

template<class T, class Compare>
constexpr const T& clamp( const T& v, const T& lo, const T& hi, Compare comp )
{
    return assert( !comp(hi, lo) ),
        comp(v, lo) ? lo : comp(hi, v) ? hi : v;
}

우선순위에 따라 대입 등에서 앞에거와 먼저 결합하는 현상이 모이지만

괄호 내에서는 순서대로가 보장되는 듯함; 스펙에 대한 언급이 없기에

그냥 믿기엔 위험하지만, 대강 되는 걸로

'Game > 작업일지' 카테고리의 다른 글

Vulkan 2번째 mesh shader  (0) 2018.11.21
Vulkan first attempt  (0) 2018.11.16
Vulkan, DirectX12  (0) 2018.11.12
Ray-MMD's Water, Noise, fbm  (0) 2018.11.12
RTX 구현 및 응용  (0) 2018.11.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크