# Build error with g++ 13.2

**URL:** https://discourse.itk.org/t/build-error-with-g-13-2/6317
**Category:** Engineering
**Created:** [November 24, 2023, 1:39pm UTC](https://discourse.itk.org/t/build-error-with-g-13-2/6317 "2023-11-24T13:39:37Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![codeling](https://discourse.itk.org/user_avatar/discourse.itk.org/codeling/32/2214_2.png) [@codeling](https://discourse.itk.org/u/codeling)
#### Post date: [November 24, 2023, 1:39pm UTC](https://discourse.itk.org/t/build-error-with-g-13-2/6317/1 "2023-11-24T13:39:38Z")

</div>

Just tried building ITK 5.4rc1 with g++ 13.2.1 on Fedora 39 (I erroneously reported clang 17 before, which I thought the build was using, but the compiler didn’t get set properly, the build was actually running with g++), I got this build error:

```auto
FAILED: Modules/Core/GPUFiniteDifference/src/CMakeFiles/ITKGPUFiniteDifference.dir/itkGPUFiniteDifferenceFilterEnum.cxx.o 
/usr/bin/c++ -DITKGPUFiniteDifference_EXPORTS -I/build/itk/bin-5.4rc01/Modules/ThirdParty/Eigen3/src -I/build/itk/bin-5.4rc01/Modules/ThirdParty/KWSys/src -I/build/itk/src-5.4rc01/Modules/ThirdParty/VNL/src/vxl/v3p/netlib -I/build/itk/src-5.4rc01/Modules/ThirdParty/VNL/src/vxl/vcl -I/build/itk/src-5.4rc01/Modules/ThirdParty/VNL/src/vxl/core -I/build/itk/bin-5.4rc01/Modules/ThirdParty/VNL/src/vxl/v3p/netlib -I/build/itk/bin-5.4rc01/Modules/ThirdParty/VNL/src/vxl/vcl -I/build/itk/bin-5.4rc01/Modules/ThirdParty/VNL/src/vxl/core -I/build/itk/bin-5.4rc01/Modules/Core/Common -I/build/itk/src-5.4rc01/Modules/Core/Common/include -I/build/itk/src-5.4rc01/Modules/Core/FiniteDifference/include -I/build/itk/src-5.4rc01/Modules/Core/GPUCommon/include -I/build/OpenCL/install/include -I/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include -I/build/itk/src-5.4rc01/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo -I/build/itk/src-5.4rc01/Modules/ThirdParty/VNL/src/vxl/core/vnl -I/build/itk/bin-5.4rc01/Modules/ThirdParty/VNL/src/vxl/core/vnl -isystem /build/itk/src-5.4rc01/Modules/ThirdParty/Eigen3/src/itkeigen/.. -mtune=generic -march=corei7 -Wall -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wctad-maybe-unsupported -Wstrict-null-sentinel -fno-sized-deallocation -msse2 -O3 -DNDEBUG -std=c++17 -fPIC -MD -MT Modules/Core/GPUFiniteDifference/src/CMakeFiles/ITKGPUFiniteDifference.dir/itkGPUFiniteDifferenceFilterEnum.cxx.o -MF Modules/Core/GPUFiniteDifference/src/CMakeFiles/ITKGPUFiniteDifference.dir/itkGPUFiniteDifferenceFilterEnum.cxx.o.d -o Modules/Core/GPUFiniteDifference/src/CMakeFiles/ITKGPUFiniteDifference.dir/itkGPUFiniteDifferenceFilterEnum.cxx.o -c /build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx
In file included from /build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx:18:
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h:30:6: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
   30 | enum class GPUFiniteDifferenceFilterEnum : uint8_t
      | ~~~~^~~~~
      | -----
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h:30:42: error: found ‘:’ in nested-name-specifier, expected ‘::’
   30 | enum class GPUFiniteDifferenceFilterEnum : uint8_t
      | ^
      | ::
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h:30:12: error: ‘GPUFiniteDifferenceFilterEnum’ has not been declared
   30 | enum class GPUFiniteDifferenceFilterEnum : uint8_t
      | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h:31:1: error: expected unqualified-id before ‘{’ token
   31 | {
      | ^
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h:37:75: error: ‘GPUFiniteDifferenceFilterEnum’ does not name a type; did you mean ‘itkGPUFiniteDifferenceFilterEnum_h’?
   37 | operator<<(std::ostream & out, const GPUFiniteDifferenceFilterEnum value);
      | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      | itkGPUFiniteDifferenceFilterEnum_h
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx:23:38: error: ‘GPUFiniteDifferenceFilterEnum’ does not name a type; did you mean ‘itkGPUFiniteDifferenceFilterEnum_h’?
   23 | operator<<(std::ostream & out, const GPUFiniteDifferenceFilterEnum value)
      | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      | itkGPUFiniteDifferenceFilterEnum_h
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx: In lambda function:
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx:28:12: error: ‘GPUFiniteDifferenceFilterEnum’ has not been declared
   28 | case GPUFiniteDifferenceFilterEnum::UNINITIALIZED:
      | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/itk/src-5.4rc01/Modules/Core/GPUFiniteDifference/src/itkGPUFiniteDifferenceFilterEnum.cxx:32:12: error: ‘GPUFiniteDifferenceFilterEnum’ has not been declared
   32 | case GPUFiniteDifferenceFilterEnum::INITIALIZED:
      | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

```

There’s an easy fix - the error goes away when inserting `#include <cstdint>`. I don’t have time at the moment to test if this is an issue in git master as well, so I don’t want to report a bug just yet. But considering [that itkGPUFiniteDifferenceFilterEnum.h in master](https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/GPUFiniteDifference/include/itkGPUFiniteDifferenceFilterEnum.h) as well as the 5.4 branch do not contain `#include <cstdint>`, I assume it highly likely the error will happen there as well, and I wanted to report it somehow 😉 .

---

<div class="post-metadata">

### Author: ![dzenanz](https://discourse.itk.org/user_avatar/discourse.itk.org/dzenanz/32/1093_2.png) [@dzenanz](https://discourse.itk.org/u/dzenanz)
#### Post date: [November 24, 2023, 5:47pm UTC](https://discourse.itk.org/t/build-error-with-g-13-2/6317/2 "2023-11-24T17:47:57Z")

</div>

It sounds like an easy fix. Could you submit a PR?

---

<div class="post-metadata">

### Author: ![Niels\_Dekker](https://discourse.itk.org/letter_avatar_proxy/v4/letter/n/9d8465/32.png) [@Niels\_Dekker](https://discourse.itk.org/u/Niels_Dekker)
#### Post date: [November 27, 2023, 9:51pm UTC](https://discourse.itk.org/t/build-error-with-g-13-2/6317/3 "2023-11-27T21:51:42Z")

</div>

I think it should be:

```auto
#include "itkIntTypes.h"

```

In order to use `uint8_t` within the `itk` namespace.

My two cents, Niels

---

<div class="post-metadata">

### Author: ![codeling](https://discourse.itk.org/user_avatar/discourse.itk.org/codeling/32/2214_2.png) [@codeling](https://discourse.itk.org/u/codeling)
#### Post date: [November 28, 2023, 7:34am UTC](https://discourse.itk.org/t/build-error-with-g-13-2/6317/4 "2023-11-28T07:34:53Z")

</div>

As originally planned I now also built using clang 17 and it has the same issue.

> [@dzenanz](#):
>
> It sounds like an easy fix. Could you submit a PR?

Done, see

> <https://github.com/InsightSoftwareConsortium/ITK/pull/4348>
>
> Fixes build on gcc 13.2 and clang 17 (tested on Fedora 39), see also https://dis…course.itk.org/t/build-error-with-g-13-2
> 
> \## PR Checklist
> \- \[x\] No \[API changes\](https://github.com/InsightSoftwareConsortium/ITK/blob/master/CONTRIBUTING.md#breaking-changes) were made (or the changes have been approved)
> \- \[x\] No \[major design changes\](https://github.com/InsightSoftwareConsortium/ITK/blob/master/CONTRIBUTING.md#design-changes) were made (or the changes have been approved)
> \- \[x\] Added test (or behavior not changed)
> \- \[x\] Updated API documentation (or API not changed)
> \- \[x\] Added \[license\](https://github.com/InsightSoftwareConsortium/ITK/blob/master/Utilities/KWStyle/ITKHeader.h) to new files (if any)
> \- \[x\] Added Python wrapping to new files (if any) as described in \[ITK Software Guide\](https://itk.org/ItkSoftwareGuide.pdf) Section 9.5
> \- \[x\] Added \[ITK examples\](https://github.com/InsightSoftwareConsortium/ITKSphinxExamples) for all new major features (if any)

> [@Niels\_Dekker](#):
>
> I think it should be:
> 
> ```auto
> #include "itkIntTypes.h"
> 
> ```
> 
> In order to use `uint8_t` within the `itk` namespace.

Thanks for the hint, above pull request uses your proposed fix!
