Skip to content

Commit 81fe373

Browse files
authored
NVCC + C++17 (#1103)
* NVCC + C++17 Work-around a build issue with NVCC in C++17 builds. ``` include/openPMD/backend/Attributable.hpp(437): error #289: no instance of constructor "openPMD::Attribute::Attribute" matches the argument list argument types are: (std::__cxx11::string) detected during instantiation of "__nv_bool openPMD::AttributableInterface::setAttribute(const std::__cxx11::string &, T) [with T=std::__cxx11::string]" ``` from ``` inline bool AttributableInterface::setAttribute( std::string const & key, char const value[] ) { return this->setAttribute(key, std::string(value)); } ``` Seen with: - NVCC 11.0.2 + GCC 8.3.0 - NVCC 11.0.2 + GCC 7.5.0 * NVCC 11.0.2 C++17 work-around: Add Comment
1 parent 5bf5bc7 commit 81fe373

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

include/openPMD/backend/Attributable.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,12 @@ AttributableInterface::setAttribute( std::string const & key, T value )
434434
&& !attri.m_attributes.key_comp()(key, it->first) )
435435
{
436436
// key already exists in map, just replace the value
437-
it->second = Attribute(value);
437+
438+
// note: due to a C++17 issue with NVCC 11.0.2 we write the
439+
// T value to variant conversion explicitly
440+
// https://github.com/openPMD/openPMD-api/pull/1103
441+
//it->second = Attribute(std::move(value));
442+
it->second = Attribute(Attribute::resource(std::move(value)));
438443
return true;
439444
} else
440445
{

0 commit comments

Comments
 (0)