TheWaterProgrammer
TheWaterProgrammer

Reputation: 8259

std::round is not a member of std on android

I am using std::round from C++ 11 on a Qt app built for android & iOS. But on android, I get the error that std::round is not a member of std in spite of including the cmath header.

How can I make std::round work on android ? Is there an alternative to std::round ?

Following is my android environment:

ANDROID_NDK_PLATFORM = android-23
NDK version          = r13b
ANDROID_NDK_TOOLCHAIN_VERSION = 4.9

Upvotes: 6

Views: 3637

Answers (2)

Bruno Alexandre Rosa
Bruno Alexandre Rosa

Reputation: 609

How can I make std::round work on android ?

(EDIT: updated instructions)

Switch to NDK r18 and remove the ANDROID_NDK_TOOLCHAIN_VERSION = 4.9 line since gcc is now completely removed from NDK, defaulting to clang.

Upvotes: 1

Dimitrios Bouzas
Dimitrios Bouzas

Reputation: 42929

Looks like a few functions from the cmath header are missing from the Android-NDK, see here for more details.

It's very easy to implement your own round function however:

template<typename T>
T round(T v) {
  return int(v + 0.5);
}

Or check other suggestions/implementations here.

Upvotes: 3

Related Questions